Динамическая подготовка тома
Создайте под с динамически подготовленным томом:
Перед началом работы установите kubectl
Совет
Вы можете использовать бакет Yandex Object Storage в качестве хранилища для пода. Подробнее см. в разделе Интеграция с Object Storage.
Создайте объект PersistentVolumeClaim
-
Сохраните следующую спецификацию для создания объекта
PersistentVolumeClaim
в YAML-файл с названиемpvc-dynamic.yaml
.Примечание
Если не указать параметр
storageClassName
, будет использован класс хранилищ по умолчанию:yc-network-hdd
. Как изменить класс по умолчанию читайте в разделе Измените класс хранилищ по умолчанию.Подробнее о спецификации для создания объекта
PersistentVolumeClaim
читайте в документации Kubernetes .apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-dynamic spec: accessModes: - ReadWriteOnce storageClassName: yc-network-hdd resources: requests: storage: 4Gi
-
Выполните команду:
kubectl create -f pvc-dynamic.yaml
Результат:
persistentvolumeclaim/pvc-dynamic created
-
Посмотрите информацию о созданном объекте
PersistentVolumeClaim
:kubectl describe persistentvolumeclaim pvc-dynamic
Результат:
Name: pvc-dynamic Namespace: default StorageClass: yc-network-hdd ... Type Reason Age From Message ---- ------ ---- ---- ------- Normal WaitForFirstConsumer 9s (x3 over 15s) persistentvolume-controller waiting for first consumer to be created before binding
Создайте под с динамически подготовленным томом
-
Сохраните следующую спецификацию для создания пода в YAML-файл с названием
pod.yaml
.Подробнее о спецификации для создания пода читайте в документации Kubernetes
.apiVersion: v1 kind: Pod metadata: name: 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: pvc-dynamic
-
Выполните команду:
kubectl create -f pod.yaml
Результат:
pod/pod created
-
Посмотрите информацию о созданном поде:
kubectl describe pod pod
Результат:
Name: pod Namespace: default Priority: 0 ... Normal Pulled 11s kubelet, cl1gqrct5oie********-ytas Successfully pulled image "ubuntu" Normal Created 10s kubelet, cl1gqrct5oie********-ytas Created container Normal Started 10s kubelet, cl1gqrct5oie********-ytas Started container
После создания пода:
-
В консоли управления
в Compute Cloud в разделе Диски появится новый диск с префиксомk8s-csi
в имени диска. -
В событиях объекта
PersistentVolumeClaim
появится информация о выделении диска:kubectl describe persistentvolumeclaim pvc-dynamic
Результат:
Name: pvc-dynamic Namespace: default StorageClass: yc-network-hdd ... Normal ExternalProvisioning 4m10s (x3 over 4m10s) persistentvolume-controller waiting for a volume to be created, either by external provisioner "disk-csi-driver.mks.ycloud.io" or manually created by system administrator Normal Provisioning 4m10s disk-csi-driver.mks.ycloud.io_cat1h5l0v862oq74cp8j_d0f0b837-a875-11e9-b6cb-d00d******** External provisioner is provisioning volume for claim "default/pvc-dynamic" Normal ProvisioningSucceeded 4m7s disk-csi-driver.mks.ycloud.io_cat1h5l0v862oq74cp8j_d0f0b837-a875-11e9-b6cb-d00d******** Successfully provisioned volume pvc-c4794058-ad68-11e9-b71a-d00d********
-
Как удалить том
Чтобы удалить динамически подготовленный том, удалите объект PersistentVolumeClaim
:
kubectl delete pvc <идентификатор_объекта_PersistentVolumeClaim>
Диск в Yandex Compute Cloud удалится автоматически.