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

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

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

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

  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
    nodeAffinity :
    required :
    nodeSelectorTerms :
    - matchExpressions :
    - key : topology.kubernetes.io/zone
    operator : In
    values :
    - ru.AZ-1
    volumeMode : Filesystem
    persistentVolumeReclaimPolicy : Retain

    Где:

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

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

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

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

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

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

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

    • spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions.key — название метки на рабочем узле.

    • spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions.values — значение метки на рабочему узле. Значение ru.AZ-1 означает, что диск должен быть примонтирован к поду, размещенному на рабочем узле, который создан в зоне доступности ru.AZ-1.

      Обратите внимание, диск и под, к которому планируется подключение, должны находиться в одной зоне доступности, иначе подключение диска к поду будет невозможно.

    • 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