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

В этой инструкции рассмотрен пример создания пода с предварительно подготовленным постоянным томом.

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

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

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

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

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

  5. Создайте диск, если еще не создавали, и получите его идентификатор.

Шаг 1. Создайте постоянный том

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

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: cloudru-pv
    spec:
      storageClassName: cloudru-nvme
      accessModes:
        - ReadWriteOnce
      capacity:
        storage: 10Gi
      csi:
        driver: mk8s.csi.cloud.ru
        volumeHandle: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        fsType: ext4
      volumeMode: Filesystem
      persistentVolumeReclaimPolicy: Retain
    

    Где:

    • metadata.name — название постоянного тома.

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

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

    • spec.capacity.storage — размер постоянного тома. Он должен совпадать с размером диска.

    • spec.csi.driver — название драйвера, который будет использован для предоставления тома.

    • spec.csi.volumeHandle — идентификатор диска.

    • spec.csi.fsType — тип файловой системы для монтирования.

    • spec.volumeMode — параметр, который определяет, будет ли том использоваться с отформатированной файловой системой или останется в состоянии блочного устройства.

    • spec.persistentVolumeReclaimPolicy — параметр, который определяет, что произойдет с постоянным томом при удалении соответствующего Persistent Volume Claim (PVC).

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

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

    kubectl create -f cloudru-pv.yaml
    

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

    persistentvolume/cloudru-pv created
    
  3. Убедитесь, что постоянный том создан, а его статус Available:

    kubectl describe pv cloudru-pv
    

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

Шаг 2. Создайте Persistent Volume Claim

Чтобы использовать постоянный том, необходимо создать Persistent Volume Claim.

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

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

    Где:

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

    • spec.volumeName — название подготовленного тома.

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

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

    • spec.resources.requests.storage — размер выделяемого тома. Должен быть меньше или равен размеру постоянного тома.

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

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

    kubectl create -f cloudru-pvc.yaml
    

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

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

    kubectl describe pvc cloudru-pvc
    

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

  4. Проверьте статус постоянного тома:

    kubectl get pv cloudru-pv
    

    После создания PVC статус постоянного тома должен измениться на Bound.

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

  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 pod cloudru-pod
    

    Результат:

    NAME          READY   STATUS    RESTARTS   AGE
    cloudru-pod   1/1     Running   0          7m28s
    

Шаг 4. Удалите ресурсы

Если вы завершили работу с ресурсами, удалите их.

  1. Удалите под:

    kubectl delete pod cloudru-pod
    

    Результат:

    pod "cloudru-pod" deleted
    
  2. Удалите Persistent Volume Claim:

    kubectl delete pvc cloudru-pvc
    

    Результат:

    persistentvolumeclaim "cloudru-pvc" deleted
    
  3. Удалите постоянный том:

    kubectl delete pv cloudru-pv
    

    Результат:

    pod "cloudru-pv" deleted
    
Запустили Evolution free tier
для Dev & Test
Получить