nav-img
Evolution

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

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

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

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

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

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

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

Шаг 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