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

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

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

  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