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

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

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

  1. Создайте кластер с публичным IP-адресом и группу узлов.

  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 — размер тома. Допустимое значение — до 4 ТБ, кратное 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 free tier
для Dev & Test
Получить