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

В инструкции рассмотрим пример создания пода с постоянным хранилищем Object Storage, бакет которого создан заранее.

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

  1. Проверьте, что в проекте подключен сервис Object Storage.

  2. Создайте сервисный аккаунт.

    Для работы с объектным хранилищем на сервисный аккаунт необходимо назначить роли s3e.editor и s3e.viewer.

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

    При создании кластера выберите сервисный аккаунт, созданный на предыдущем шаге. Можно также использовать сервисный аккаунт, который создается автоматически, тогда все необходимые роли будут назначены сразу.

  4. Установите плагин S3 CSI Driver.

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

  6. Подключитесь к кластеру Managed Kubernetes.

  7. Создайте бакет Object Storage.

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

  1. Создайте cloudru-s3-pv-static.yaml и сохраните манифест:

    apiVersion : v1
    kind : PersistentVolume
    metadata :
    name : cloudru-s3-pv-static
    spec :
    storageClassName : ""
    accessModes :
    - ReadWriteMany
    capacity :
    storage : 10Gi
    csi :
    driver : s3.mk8s.csi.cloud.ru
    volumeHandle : <bucket_id>

    Где:

    • storageClassName — название класса хранилища. Следует оставить параметр незаполненным.

    • spec.accessModes — режим доступа к тому. Необходимо указать ReadWriteMany.

    • spec.capacity.storage — размер постоянного тома.

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

    • spec.csi.volumeHandle — идентификатор бакета Object Storage. ID можно скопировать из URL бакета.

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

    kubectl create -f cloudru-s3-pv-static.yaml
  3. Убедитесь, что постоянный том создан, а его статус Available:

    kubectl describe pv cloudru-s3-pv-static

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

  1. Создайте файл cloudru-s3-pvc-static.yaml и сохраните манифест:

    apiVersion : v1
    kind : PersistentVolumeClaim
    metadata :
    name : cloudru-s3-pvc-static
    spec :
    storageClassName : ""
    accessModes :
    - ReadWriteMany
    resources :
    requests :
    storage : 10Gi

    Где spec.accessModes — режим доступа к тому. Необходимо указать ReadWriteMany.

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

    kubectl create -f cloudru-s3-pvc-static.yaml
  3. Убедитесь, что PVC создан:

    kubectl describe pvc cloudru-s3-pvc-static

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

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

    kubectl get pv cloudru-s3-pv-static

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

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

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

    apiVersion : v1
    kind : Pod
    metadata :
    name : cloudru-s3-pod-static
    spec :
    containers :
    - name : web-server
    image : nginx
    volumeMounts :
    - mountPath : /pv
    name : cloudru-s3-pv-static
    volumes :
    - name : cloudru-s3-pv-static
    persistentVolumeClaim :
    claimName : cloudru-s3-pvc-static

    Где:

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

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

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

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

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

    kubectl create -f cloudru-s3-pod-static.yaml
  3. Проверьте статус Deployment:

    kubectl get pod cloudru-s3-pod-static

    Результат:

    NAME READY UP-TO-DATE AVAILABLE AGE
    cloudru-s3-pod-static 1 /1 1 1 61s

Шаг 4. Проверьте работу с хранилищем

  1. Создайте файл в контейнере /pv/s3_file:

    kubectl exec -ti cloudru-s3-pod-static -- touch /pv/s3_file
  2. Проверьте, что файл попал в бакет.

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

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

  1. Выполните последовательно команды:

    kubectl delete pod cloudru-s3-pod-static
    kubectl delete pvc cloudru-s3-pvc-static
    kubectl delete pv cloudru-s3-pv-static
  2. Удалите бакет Object Storage.

Evolution