Статическая подготовка тома
Создайте под со статически подготовленным томом:
Совет
Вы можете использовать бакет 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
-
Сохраните спецификацию для создания объекта
PersistentVolumeClaimYAML-файл с названием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.