Создать под со статически подготовленным томом
В этой инструкции рассмотрен пример создания пода с предварительно подготовленным постоянным томом.
Перед началом работы
-
Создайте SNAT-шлюз для доступа к образу, который будете развертывать на поде.
-
Создайте кластер Managed Kubernetes и хотя бы одну группу узлов.
-
Установите CSI-драйвер для работы с постоянными томами.
-
Подключитесь к созданному кластеру.
-
Создайте диск и получите его идентификатор.
Шаг 1. Создайте постоянный том
-
Сохраните следующий манифест в файл cloudru-pv.yaml:
apiVersion: v1kind: PersistentVolumemetadata:name: cloudru-pvspec:storageClassName: cloudru-nvmeaccessModes:- ReadWriteOncecapacity:storage: 10Gicsi:driver: mk8s.csi.cloud.ruvolumeHandle: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxfsType: ext4nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: topology.kubernetes.io/zoneoperator: Invalues:- ru.AZ-1volumeMode: FilesystempersistentVolumeReclaimPolicy: RetainГде:
-
metadata.name — название постоянного тома.
-
spec.storageClassName — название класса хранилища.
-
spec.accessModes — режим доступа к тому.
-
spec.capacity.storage — размер постоянного тома. Должен совпадать с размером диска.
-
spec.csi.driver — название драйвера, который будет использован для предоставления тома.
-
spec.csi.volumeHandle — идентификатор диска.
-
spec.csi.fsType — тип файловой системы для монтирования.
-
spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions.key — название метки на рабочем узле.
-
spec.nodeAffinity.required.nodeSelectorTerms.matchExpressions.values — значение метки на рабочему узле. Значение ru.AZ-1 означает, что диск должен быть примонтирован к поду, размещенному на рабочем узле, который создан в зоне доступности ru.AZ-1.
Обратите внимание, диск и под, к которому планируется подключение, должны находиться в одной зоне доступности, иначе подключение диска к поду будет невозможно.
-
spec.volumeMode — параметр, который определяет, будет ли том использоваться с отформатированной файловой системой или останется в состоянии блочного устройства.
-
spec.persistentVolumeReclaimPolicy — параметр, который определяет, что произойдет с постоянным томом при удалении соответствующего Persistent Volume Claim (PVC).
Подробное описание параметров для создания постоянного тома см. в документации Kubernetes.
-
-
Выполните команду:
kubectl create -f cloudru-pv.yamlЕсли команда выполнена успешно, появится сообщение:
persistentvolume/cloudru-pv created -
Убедитесь, что постоянный том создан, а его статус Available:
kubectl describe pv cloudru-pvОтобразится подробная информация о постоянном томе.
Шаг 2. Создайте Persistent Volume Claim
Чтобы использовать постоянный том, необходимо создать Persistent Volume Claim.
-
Сохраните следующий манифест в файл cloudru-pvc.yaml:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: cloudru-pvcspec:storageClassName: cloudru-nvmevolumeName: cloudru-pvaccessModes:- ReadWriteOnceresources:requests:storage: 10GiГде:
-
spec.storageClassName — название класса хранилища.
-
spec.volumeName — название подготовленного тома.
-
spec.accessModes — режим доступа к тому.
-
spec.resources.requests — минимальное количество ресурсов для выделяемого тома.
-
spec.resources.requests.storage — размер выделяемого тома. Должен быть меньше или равен размеру постоянного тома.
Подробное описание параметров для создания PVC см. в документации Kubernetes.
-
-
Выполните команду:
kubectl create -f cloudru-pvc.yamlЕсли команда выполнена успешно, появится сообщение:
persistentvolumeclaim/cloudru-pvc created -
Убедитесь, что PVC создан:
kubectl describe pvc cloudru-pvcОтобразится подробная информация о созданном PVC.
-
Проверьте статус постоянного тома:
kubectl get pv cloudru-pvПосле создания PVC статус постоянного тома должен измениться на Bound.
Шаг 3. Создайте под со статически подготовленным томом
-
Сохраните следующий манифест в файл cloudru-pod.yaml:
apiVersion: v1kind: Podmetadata:name: cloudru-podspec:containers:- name: web-serverimage: nginxvolumeMounts:- mountPath: /var/lib/www/htmlname: cloudru-storagevolumes:- name: cloudru-storagepersistentVolumeClaim:claimName: cloudru-pvcГде:
-
spec.containers — список контейнеров, которые хотите запустить на поде.
-
spec.containers.name — название контейнера.
-
spec.containers.image — образ для развертывания в контейнере.
-
spec.volumeMounts — параметры монтирования тома в контейнере.
-
spec.volumeMounts.mountPath — путь к каталогу в файловой системе контейнера, куда должен быть смонтирован том.
-
spec.volumeMounts.name — название подключаемого тома.
-
spec.volumes — список параметров всех томов пода.
-
spec.volumes.name — название тома.
-
spec.volumes.persistentVolumeClaim — информация о PVC для соответствующего постоянного тома.
-
spec.volumes.persistentVolumeClaim.claimName — название PVC-объекта.
Подробнее о параметрах манифеста для создания пода см. в документации Kubernetes.
-
-
Выполните команду:
kubectl create -f cloudru-pod.yamlРезультат:
pod/cloudru-pod created -
Проверьте статус пода:
kubectl get pod cloudru-podРезультат:
NAME READY STATUS RESTARTS AGEcloudru-pod 1/1 Running 0 7m28s
Шаг 4. Удалите ресурсы
Если вы завершили работу с ресурсами, удалите их.
-
Удалите под:
kubectl delete pod cloudru-podРезультат:
pod "cloudru-pod" deleted -
Удалите Persistent Volume Claim:
kubectl delete pvc cloudru-pvcРезультат:
persistentvolumeclaim "cloudru-pvc" deleted -
Удалите постоянный том:
kubectl delete pv cloudru-pvРезультат:
pod "cloudru-pv" deleted
- Перед началом работы
- Шаг 1. Создайте постоянный том
- Шаг 2. Создайте Persistent Volume Claim
- Шаг 3. Создайте под со статически подготовленным томом
- Шаг 4. Удалите ресурсы