Создать под со статически подготовленным томом
В этой инструкции рассмотрен пример создания пода с предварительно подготовленным постоянным томом.
Перед началом работы
Создайте кластер Managed Kubernetes и хотя бы одну группу узлов.
Установите CSI-драйвер для работы с постоянными томами.
Создайте SNAT-шлюз для доступа к образу, который будете развертывать на поде.
Подключитесь к созданному кластеру.
Создайте диск и получите его идентификатор.
Шаг 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. Удалите ресурсы