Что такое PV и PVC?
Создать PVC
Что такое PV и PVC?
PV (Persistent Volumes или постоянные тома) — это ресурсы хранения в кластере Kubernetes, которые используют поды. PV существуют независимо от подов — их цикл жизни определяет Политика Возврата (Reclaim Policy). В зависимости от Политики возврата, PV может быть сохранён или удалён после удаления пода, который был привязан к этому PV.
PV — это некоторый свободный объём хранилища. Для того, чтобы привязать этот объём хранилища к поду, нужно создать PVC (Persistent Volume Claim или запрос на постоянный том) — запрос на выделение хранилища. После того, как PVC создан, Kubernetes перенаправляет его к компоненту «класс хранилища» (storageclass), который предоставляет хранилище. Класс хранилища автоматически создаёт PV в ответ на PVC.
Создать PVC
Существует 4 класса хранилища в зависимости от типа диска: стандарт, ультра, cold и ssd_hiiops. Класс хранилища с типом диска standard доступен по умолчанию. Поэтому при работе с таким диском необходимо создать только PVC. При работе с дисками других типов необходимо сначала создать класс хранилища с нужным типом диска, а затем создать PVC.
Создать PVC для класса хранилища с типом диска standard
1. Для создания и настройки PVC подготовьте YAML-файл в любом кодовом или текстовом редакторе:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
где:
block-pvc — название PVC,
1Gi — необходимый объём хранилища.
2. Выполните команду kubectl из файловой директории:
kubectl apply -f <имя YAML-файла>.yaml
Вы получите ответ:
persistentvolumeclaim/<имя созданного PVC> created
Вы создали PVC для класса хранилища с типом диска standard. Чтобы привязать PVC к вашему поду, перейдите
к разделу Привязать PVC к поду.
Создать PVC для класса хранилища с типом диска ultra/cold/ssd_hiiops
Проверьте доступные типы дисков в разных регионах в личном кабинете или с помощью API-запроса.
1. Для создания и настройки класса хранилища с типом диска ultra/cold/ssd_hiiops подготовьте YAML-файл в любом
кодовом или текстовом редакторе:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-sc-cinderplugin-hiiops annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: cinder.csi.gcorelabs.com parameters: type: ssd_hiiops allowVolumeExpansion: true
где:
csi-sc-cinderplugin-hiiops — название класса хранилища,
ssd_hiiops — необходимый тип диска.
2. Выполните команду kubectl из файловой директории:
kubectl apply -f <имя YAML-файла>.yaml
Вы получите ответ:
storageclass/<имя созданного класса хранилища> created
3. Для создания и настройки PVC подготовьте YAML-файл в любом кодовом или текстовом редакторе:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-pvc spec: storageClassName: csi-sc-cinderplugin-hiiops accessModes: - ReadWriteOnce resources: requests: storage: 1Gi
где:
block-pvc — название PVC,
csi-sc-cinderplugin-hiiops — название созданного класса хранилища,
1Gi — необходимый объём хранилища.
4. Выполните команду kubectl из файловой директории:
kubectl apply -f <имя YAML-файла>.yaml
Вы получите ответ:
persistentvolumeclaim/<имя созданного PVC> created
Вы создали PVC для класса хранилища с необходимым типом диска. Чтобы привязать PVC к вашему поду, перейдите
к следующему разделу.
Привязать PVC к поду
1. Чтобы привязать созданный класс хранилища к поду, подготовьте YAML-файл в любом кодовом или текстовом
редакторе:
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: myfrontend image: nginx volumeMounts: - mountPath: "/var/www/html" name: mypd volumes: - name: mypd persistentVolumeClaim: claimName: block-pvc
где:
mypod — название пода,
myfrontend — название контейнера,
“/var/www/html” — место внутри пода, куда необходимо установить класс хранилища,
mypd — название класса хранилища,
block-pvc — название созданного PVC.
2. Выполните команду kubectl из файловой директории:
kubectl apply -f <имя YAML-файла>.yaml
Вы получите ответ:
pod/<имя пода> created
Теперь вы успешно привязали PVC к вашему поду, а у его контейнеров есть доступ к хранилищу.