Создать под с динамически подготовленным томом

В этой инструкции рассмотрен пример создания пода с постоянным томом, который динамически подготавливается с помощью объекта Persistent Volume Claim (PVC).

Перед началом работы

  1. Создайте кластер Managed Kubernetes и хотя бы одну группу узлов.

  2. Установите CSI-драйвер для работы с постоянными томами.

  3. Создайте SNAT-шлюз для доступа к образу, который будете развертывать на поде.

  4. Подключитесь к созданному кластеру.

Шаг 1. Создайте PVC

Создайте запрос на предоставление постоянного тома размером 6 ГБ и режимом доступа ReadWriteOnce.

  1. Сохраните следующий манифест в файл cloudru-pvc.yaml:

    apiVersion : v1
    kind : PersistentVolumeClaim
    metadata :
    name : cloudru-pvc
    spec :
    storageClassName : cloudru-nvme
    accessModes :
    - ReadWriteOnce
    resources :
    requests :
    storage : 6Gi

    Где:

    • spec.storageClassName — название класса хранилищ.

    • spec.accessModes — режим доступа к тому.

    • spec.resources.requests — минимальное количество ресурсов для выделяемого тома.

    • spec.resources.requests.storage — размер тома. Допустимое значение — до 16 ТБ, кратное 1 ГБ.

    Подробное описание параметров PVC см. в документации Kubernetes.

  2. Выполните команду:

    kubectl create -f cloudru-pvc.yaml

    Если команда выполнена успешно, появится сообщение:

    persistentvolumeclaim/cloudru-pvc created
  3. Убедитесь, что PVC создан:

    kubectl describe pvc cloudru-pvc

    Отобразится подробная информация о созданном PVC.

Шаг 2. Создайте под с динамически подготовленным томом

  1. Сохраните следующий манифест в файл cloudru-pod.yaml:

    apiVersion : v1
    kind : Pod
    metadata :
    name : cloudru-pod
    spec :
    containers :
    - name : web-server
    image : nginx
    volumeMounts :
    - mountPath : /var/lib/www/html
    name : cloudru-storage
    volumes :
    - name : cloudru-storage
    persistentVolumeClaim :
    claimName : cloudru-pvc

    Где:

    • spec.containers — список контейнеров, которые хотите запустить на поде.

    • spec.containers.name — название контейнера.

    • spec.containers.image — образ для развертывания в контейнере.

    • spec.volumeMounts — параметры монтирования тома.

    • spec.volumeMounts.mountPath — путь к каталогу в файловой системе контейнера, куда должен быть смонтирован том.

    • spec.volumeMounts.name — название подключаемого тома.

    • spec.volumes — список параметров всех томов пода.

    • spec.volumes.name — название тома.

    • spec.volumes.persistentVolumeClaim — информация о PVC для соответствующего постоянного тома.

    • spec.volumes.persistentVolumeClaim.claimName — название PVC-объекта.

    Подробнее о параметрах манифеста для создания пода смотрите в документации Kubernetes.

  2. Выполните команду:

    kubectl create -f cloudru-pod.yaml

    Результат:

    pod/cloudru-pod created
  3. Проверьте параметры постоянного тома:

    kubectl get pv

    Результат:

    NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
    pvc-32218813-09c7-4a5f-b768-5ca91c506272 6Gi RWO Delete Bound default/cloudru-pvc cloudru-nvme 16m
  4. Проверьте статус пода:

    kubectl get pod cloudru-pod

    Результат:

    NAME READY STATUS RESTARTS AGE
    cloudru-pod 1 /1 Running 0 83m

Просмотреть информацию о созданных постоянных томах, отредактировать параметры или удалить том можно в сервисе «Диски».

Шаг 3. Удалите постоянный том

Если вы завершили работу с постоянным томом, его можно удалить. В примере достаточно удалить PVC, том удалится автоматически.

  1. Уточните, какой PVC нужно удалить:

    kubectl get pvс

    Будет отображен список объектов PVC:

    NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
    cloudru-pvc Bound pvc-32218813-09c7-4a5f-b768-5ca91c506272 6Gi RWO cloudru-nvme 92m

    Где в столбце:

    • NAME — название PVC;

    • VOLUME — название постоянного тома, который соответствует PVC.

  2. Выполните команду для удаления PVC:

    kubectl delete pvc cloudru-pvc

    Результат:

    persistentvolumeclaim "cloudru-pvc" deleted
    Внимание

    Если под активно использует объект PVC, удаление будет отложено, а PVC переведен в статус Terminating. PVC будет удален вместе с постоянным томом, когда под закончит работу с ним.

    Подробнее об этом читайте в документации Kubernetes.

  3. Если необходимо, удалите под:

    kubectl delete pod cloudru-pod

    Результат:

    pod "cloudru-pod" deleted
Evolution