Создать под с динамически подготовленным томом Object Storage
В инструкции рассмотрим пример создания пода с постоянным хранилищем Object Storage, бакет которого будет создан динамически.
Перед началом работы
-
Проверьте, что в проекте подключен сервис Object Storage.
-
Для работы с объектным хранилищем на сервисный аккаунт необходимо назначить роли s3e.editor и s3e.viewer.
-
Создайте кластер Managed Kubernetes и хотя бы одну группу узлов.
При создании кластера выберите сервисный аккаунт, созданный на предыдущем шаге. Можно также использовать сервисный аккаунт, который создается автоматически, тогда все необходимые роли будут назначены сразу.
-
Создайте SNAT-шлюз для доступа к образу, который будете развертывать на поде.
Шаг 1. Создайте Persistent Volume Claim
-
Создайте cloudru-csi-s3-pvc-dynamic.yaml и сохраните манифест:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: cloudru-csi-s3-pvc-dynamicnamespace: defaultspec:accessModes:- ReadWriteManyresources:requests:storage: 10GistorageClassName: "cloudru-s3-standard"Где:
-
spec.accessModes — режим доступа к тому. Необходимо обязательно указать ReadWriteMany.
-
storageClassName — название класса хранилища.
Возможные значения:
-
cloudru-s3-standard — стандартный;
-
cloudru-s3-single — однозонный;
-
cloudru-s3-cold — холодный;
-
cloudru-s3-ice — ледяной.
-
-
-
Выполните команду:
kubectl create -f cloudru-csi-s3-pvc-dynamic.yaml -
Убедитесь, что PVC создан:
kubectl describe pvc cloudru-csi-s3-pvc-dynamicОтобразится подробная информация о созданном PVC.
Шаг 2. Создайте под с динамически подготовленным томом
-
Создайте cloudru-s3-pod-dynamic.yaml и сохраните манифест:
apiVersion: v1kind: Podmetadata:name: cloudru-s3-pod-dynamicspec:containers:- name: web-serverimage: nginxvolumeMounts:- mountPath: /pvname: s3-storagevolumes:- name: s3-storagepersistentVolumeClaim:claimName: cloudru-csi-s3-pvc-dynamic -
Выполните команду:
kubectl create -f cloudru-s3-pod-dynamic.yaml -
Проверьте статус пода:
kubectl get pod cloudru-s3-pod-dynamicРезультат:
NAME READY UP-TO-DATE AVAILABLE AGEcloudru-s3-pod-dynamic 1/1 1 1 85s
Шаг 3. Проверьте работу с хранилищем
-
Проверьте в сервисе Object Storage, что бакет создан.
Чтобы узнать название бакета, выполните команду:
kubectl get pvc cloudru-csi-s3-pvc-dynamicРезультат:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGEcloudru-csi-s3-pvc-dynamic Bound pvc-ae5ec1db-8c20-4d0a-9a88-cac1cc433821 10Gi RWX cloudru-s3-standard <unset> 109sНазвание бакета — в столбце VOLUME.
-
Создайте файл в контейнере /pv/s3_file:
kubectl exec -ti cloudru-s3-pod-dynamic -- touch /pv/s3_file -
Проверьте, что файл попал в бакет.
Шаг 4. Удалите ресурсы
Если вы завершили работу с примером, удалите ресурсы. Для этого выполните последовательно команды:
kubectl delete pod cloudru-s3-pod-dynamickubectl delete pvc cloudru-csi-s3-pvc-dynamic
Бакет удалится автоматически.
- Перед началом работы
- Шаг 1. Создайте Persistent Volume Claim
- Шаг 2. Создайте под с динамически подготовленным томом
- Шаг 3. Проверьте работу с хранилищем
- Шаг 4. Удалите ресурсы