Создать под со статически подготовленным томом Object Storage
В инструкции рассмотрим пример создания пода с постоянным хранилищем Object Storage, бакет которого создан заранее.
Перед началом работы
-
Проверьте, что в проекте подключен сервис Object Storage.
-
Для работы с объектным хранилищем на сервисный аккаунт необходимо назначить роли s3e.editor и s3e.viewer.
-
Создайте кластер Managed Kubernetes и хотя бы одну группу узлов.
При создании кластера выберите сервисный аккаунт, созданный на предыдущем шаге. Можно также использовать сервисный аккаунт, который создается автоматически, тогда все необходимые роли будут назначены сразу.
-
Создайте SNAT-шлюз для доступа к образу, который будете развертывать на поде.
Шаг 1. Создайте Persistent Volume
-
Создайте cloudru-s3-pv-static.yaml и сохраните манифест:
apiVersion: v1kind: PersistentVolumemetadata:name: cloudru-s3-pv-staticspec:storageClassName: ""accessModes:- ReadWriteManycapacity:storage: 10Gicsi:driver: s3.mk8s.csi.cloud.ruvolumeHandle: <bucket_id>Где:
-
storageClassName — название класса хранилища. Следует оставить параметр незаполненным.
-
spec.accessModes — режим доступа к тому. Необходимо указать ReadWriteMany.
-
spec.capacity.storage — размер постоянного тома.
-
spec.csi.driver — название драйвера, который будет использован для предоставления тома.
-
spec.csi.volumeHandle — идентификатор бакета Object Storage. ID можно скопировать из URL бакета.
-
-
Выполните команду:
kubectl create -f cloudru-s3-pv-static.yaml -
Убедитесь, что постоянный том создан, а его статус Available:
kubectl describe pv cloudru-s3-pv-static
Шаг 2. Создайте Persistent Volume Claim
-
Создайте файл cloudru-s3-pvc-static.yaml и сохраните манифест:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: cloudru-s3-pvc-staticspec:storageClassName: ""accessModes:- ReadWriteManyresources:requests:storage: 10GiГде spec.accessModes — режим доступа к тому. Необходимо указать ReadWriteMany.
-
Выполните команду:
kubectl create -f cloudru-s3-pvc-static.yaml -
Убедитесь, что PVC создан:
kubectl describe pvc cloudru-s3-pvc-staticОтобразится подробная информация о созданном PVC.
-
Проверьте статус постоянного тома:
kubectl get pv cloudru-s3-pv-staticПосле создания PVC статус постоянного тома должен измениться на Bound.
Шаг 3. Создайте под со статически подготовленным томом
-
Создайте cloudru-s3-pod-static.yaml и сохраните следующий манифест:
apiVersion: v1kind: Podmetadata:name: cloudru-s3-pod-staticspec:containers:- name: web-serverimage: nginxvolumeMounts:- mountPath: /pvname: cloudru-s3-pv-staticvolumes:- name: cloudru-s3-pv-staticpersistentVolumeClaim:claimName: cloudru-s3-pvc-staticГде:
-
spec.containers.image — образ для развертывания в контейнере.
-
spec.volumeMounts — параметры монтирования тома в контейнере.
-
spec.volumeMounts.name — название подключаемого тома.
-
spec.volumes.persistentVolumeClaim.claimName — название PVC-объекта.
-
-
Выполните команду:
kubectl create -f cloudru-s3-pod-static.yaml -
Проверьте статус Deployment:
kubectl get pod cloudru-s3-pod-staticРезультат:
NAME READY UP-TO-DATE AVAILABLE AGEcloudru-s3-pod-static 1/1 1 1 61s
Шаг 4. Проверьте работу с хранилищем
-
Создайте файл в контейнере /pv/s3_file:
kubectl exec -ti cloudru-s3-pod-static -- touch /pv/s3_file -
Проверьте, что файл попал в бакет.
Шаг 5. Удалите ресурсы
Если вы завершили работу с примером, удалите ресурсы.
-
Выполните последовательно команды:
kubectl delete pod cloudru-s3-pod-statickubectl delete pvc cloudru-s3-pvc-statickubectl delete pv cloudru-s3-pv-static
- Перед началом работы
- Шаг 1. Создайте Persistent Volume
- Шаг 2. Создайте Persistent Volume Claim
- Шаг 3. Создайте под со статически подготовленным томом
- Шаг 4. Проверьте работу с хранилищем
- Шаг 5. Удалите ресурсы