Статическая подготовка тома
Создайте под со статически подготовленным томом:
Совет
Вы можете использовать бакет Yandex Object Storage в качестве хранилища для пода. Подробнее см. в разделе Интеграция с Object Storage.
Перед началом работы
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Узнайте уникальный идентификатор диска, который будет использован для создания объекта
PersistentVolume
:-
Если у вас еще нет диска, создайте его.
Важно
Диск должен быть размещен в той же зоне доступности, что и узлы группы, на которой будут работать поды.
-
Получите идентификатор диска (колонка
ID
):yc compute disk list
Результат:
+----------------------+------+------------+-------------------+--------+--------------+-------------+ | ID | NAME | SIZE | ZONE | STATUS | INSTANCE IDS | DESCRIPTION | +----------------------+------+------------+-------------------+--------+--------------+-------------+ | ef3ouo4sgl86******** | k8s | 4294967296 | ru-central1-a | READY | | | +----------------------+------+------------+-------------------+--------+--------------+-------------+
-
-
Посмотрите доступные классы хранилищ и выберите подходящий:
kubectl get storageclass
Результат:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE yc-network-hdd (default) disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 12d yc-network-nvme disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 12d yc-network-ssd disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 12d yc-network-ssd-nonreplicated disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 12d
Примечание
Не путайте классы хранилищ Kubernetes и типы дисков Yandex Compute Cloud.
Создайте объект PersistentVolume
-
Сохраните спецификацию для создания объекта
PersistentVolume
в YAML-файл с названиемtest-pv.yaml
.Подробнее о спецификации читайте в документации Kubernetes
.При указании параметра
spec.capacity.storage
убедитесь, что задан точный объем диска. Container Storage Interface не обеспечивает проверку объема диска для статически подготовленных томов.Для создания объекта
PersistentVolume
на основе существующего облачного диска в параметреvolumeHandle
укажите уникальный идентификатор необходимого диска.Примечание
Если не указать параметр
storageClassName
, будет использован класс хранилищ по умолчанию:yc-network-hdd
. Как изменить класс по умолчанию читайте в разделе Измените класс хранилищ по умолчанию.Подробнее о спецификации для создания объекта
PersistentVolumeClaim
читайте в документации Kubernetes .apiVersion: v1 kind: PersistentVolume metadata: name: <имя_PersistentVolume> spec: capacity: storage: <размер_PersistentVolume> accessModes: - ReadWriteOnce csi: driver: disk-csi-driver.mks.ycloud.io fsType: ext4 volumeHandle: <идентификатор_диска> storageClassName: <имя_класса_хранилища>
-
Выполните команду:
kubectl create -f test-pv.yaml
Результат:
persistentvolume/<имя_PersistentVolume> created
-
Посмотрите информацию о созданном объекте
PersistentVolume
:kubectl describe persistentvolume <имя_PersistentVolume>
Результат:
Name: <имя_PersistentVolume> Labels: <none> Annotations: <none> Finalizers: [kubernetes.io/pv-protection] StorageClass: <имя_класса_хранилища> Status: Available ...
Создайте объект PersistentVolumeClaim
-
Сохраните спецификацию для создания объекта
PersistentVolumeClaim
YAML-файл с названиемtest-claim.yaml
.Подробнее о спецификации читайте в документации Kubernetes
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: <имя_PersistentVolumeClaim> spec: accessModes: - ReadWriteOnce resources: requests: storage: <размер_PersistentVolumeClaim> storageClassName: <имя_класса_хранилища> volumeName: <имя_PersistentVolume>
Примечание
Размер
PersistentVolumeClaim
должен быть меньше или равен размеруPersistentVolume
. -
Выполните команду:
kubectl create -f test-claim.yaml
Результат:
persistentvolumeclaim/<имя_PersistentVolumeClaim> created
-
Посмотрите информацию о созданном
PersistentVolumeClaim
:kubectl describe persistentvolumeclaim <имя_PersistentVolumeClaim>
Результат:
Name: <имя_PersistentVolumeClaim> Namespace: default StorageClass: <имя_класса_хранилища> Status: Bound Volume: <имя_PersistentVolume> ...
Создайте под со статически подготовленным томом
-
Создайте файл
test-pod.yaml
с манифестом пода, использующегоPersistentVolumeClaim
:apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: app image: ubuntu command: ["/bin/sh"] args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"] volumeMounts: - name: persistent-storage mountPath: /data volumes: - name: persistent-storage persistentVolumeClaim: claimName: <имя_PersistentVolumeClaim>
Подробнее о спецификации читайте в документации Kubernetes
. -
Выполните команду:
kubectl create -f test-pod.yaml
Результат:
pod/test-pod created
-
Посмотрите информацию о созданном поде:
kubectl describe pod test-pod
Результат:
Name: test-pod Namespace: default Priority: 0 ... ---- ------ ---- ---- ------- Normal Scheduled 20m default-scheduler Successfully assigned default/test-pod to cl1jtehftl7q********-icut Normal SuccessfulAttachVolume 20m attachdetach-controller AttachVolume.Attach succeeded for volume "<имя_PersistentVolume>"
После этого рядом с используемым диском в консоли управления в Compute Cloud в разделе Диски появится надпись Подключен.
Как удалить том
Диски в Compute Cloud не удаляются автоматически при удалении PersistentVolume
. Чтобы полностью удалить том:
-
Удалите объект
PersistentVolumeClaim
:kubectl delete pvc <идентификатор_объекта_PersistentVolumeClaim>
-
Удалите объект
PersistentVolume
:kubectl delete pv <идентификатор_объекта_PersistentVolume>
-
Удалите диск в Compute Cloud, связанный с объектом
PersistentVolume
.