nav-img
Evolution

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

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

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

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

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

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

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

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

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

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: cloudru-csi-s3-pvc-dynamic
    namespace: default
    spec:
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: 10Gi
    storageClassName: "cloudru-s3-standard"

    Где:

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

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

      Возможные значения:

      • cloudru-s3-standard — стандартный;

      • cloudru-s3-single — однозонный;

      • cloudru-s3-cold — холодный;

      • cloudru-s3-ice — ледяной.

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

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

    kubectl describe pvc cloudru-csi-s3-pvc-dynamic

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

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

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

    apiVersion: v1
    kind: Pod
    metadata:
    name: cloudru-s3-pod-dynamic
    spec:
    containers:
    - name: web-server
    image: nginx
    volumeMounts:
    - mountPath: /pv
    name: s3-storage
    volumes:
    - name: s3-storage
    persistentVolumeClaim:
    claimName: cloudru-csi-s3-pvc-dynamic
  2. Выполните команду:

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

    kubectl get pod cloudru-s3-pod-dynamic

    Результат:

    NAME READY UP-TO-DATE AVAILABLE AGE
    cloudru-s3-pod-dynamic 1/1 1 1 85s

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

  1. Чтобы узнать название бакета, выполните команду:

    kubectl get pvc cloudru-csi-s3-pvc-dynamic

    Результат:

    NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
    cloudru-csi-s3-pvc-dynamic Bound pvc-ae5ec1db-8c20-4d0a-9a88-cac1cc433821 10Gi RWX cloudru-s3-standard <unset> 109s

    Название бакета — в столбце VOLUME.

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

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

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

Если вы завершили работу с примером, удалите ресурсы. Для этого выполните последовательно команды:

kubectl delete pod cloudru-s3-pod-dynamic
kubectl delete pvc cloudru-csi-s3-pvc-dynamic

Бакет удалится автоматически.