CCE позволяет создавать PV, используя существующий EVS disk. После создания PV вы можете создать PVC и привязать его к PV. Этот метод подходит для сценариев, когда доступно базовое хранилище.
Для кластеров v1.19.10 и более новых, если используется политика HPA для масштабирования нагрузки с подключёнными томами EVS, новый pod не может быть запущен, потому что EVS диски нельзя подключать.
Параметр | Описание |
|---|---|
Тип PVC | В этом примере выберите EVS. |
Имя PVC | Введите имя PVC, которое должно быть уникальным в namespace. |
Метод создания |
В этом примере выберите Create new для создания как PV, так и PVC в консоли. |
PVa | Выберите существующий PV в кластере. Подробности о том, как создать PV, см. в разделе «Creating a storage volume» в Related Operations. В этом примере вам не нужно указывать этот параметр. |
EVSb | Нажмите Select EVS. На отображаемой странице выберите EVS‑том, соответствующий вашим требованиям, и нажмите OK. |
PV Nameb | Введите имя PV, которое должно быть уникальным в одном кластере. |
Access Modeb | Тома EVS поддерживают только ReadWriteOnce, что означает, что том может быть смонтирован только на один узел в режиме чтения/записи. Подробности см. в Volume Access Modes. |
Reclaim Policyb | Вы можете выбрать Delete или Retain, чтобы указать политику возврата базового хранилища при удалении PVC. Подробности см. в PV Reclaim Policy. |
a: Параметр доступен, когда Creation Method установлен в Use existing.
b: Параметр доступен, когда Creation Method установлен в Create new.
Вы можете выбрать Storage в панели навигации и просмотреть созданные PVC и PV на вкладках PVCs и PVs соответственно.
Подключите и используйте тома хранилища. Для получения подробной информации о параметрах см. Table 1. Для остальных параметров см. Workloads.
Параметр | Описание |
|---|---|
PVC | Выберите существующий том EVS. Том EVS может быть подключен только к одной workload. |
Путь монтирования | Введите путь монтирования, например, /tmp. Этот параметр указывает путь контейнера, в который будет смонтирован том данных. Не монтируйте том в системный каталог, такой как / или /var/run. Это может привести к ошибкам контейнера. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании workload. Если том монтируется в каталог с высоким уровнем риска, используйте учетную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким уровнем риска на хосте могут быть повреждены. |
Subpath | Введите подкаталог тома хранения и смонтируйте путь в томе хранения к контейнеру. Таким образом, разные папки одного тома хранения могут использоваться в одном pod. tmp, например, указывает, что данные в пути монтирования контейнера хранятся в папке tmp тома хранения. Если этот параметр оставить пустым, по умолчанию будет использоваться корневой путь. |
Permission |
|
В этом примере диск смонтирован в путь /data контейнера. Данные контейнера, созданные в этом пути, хранятся на диске EVS.
Несколько неразделяемый диск EVS может быть подключен только к одному pod рабочей нагрузки. Если существует несколько pod, дополнительные pod не смогут запуститься корректно. Убедитесь, что количество pod рабочей нагрузки равно 1, если подключён диск EVS.
После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence.
apiVersion: v1kind: PersistentVolumemetadata:annotations:pv.kubernetes.io/provisioned-by: everest-csi-provisionereverest.io/reclaim-policy: retain-volume-only # (Optional) The underlying volume is retained when the PV is deleted.name: pv-evs # PV namelabels:failure-domain.beta.kubernetes.io/region: <your_region> # Region of the node where the application is to be deployedfailure-domain.beta.kubernetes.io/zone: <your_zone> # AZ of the node where the application is to be deployedspec:accessModes:- ReadWriteOnce # Access mode. The value must be ReadWriteOnce for EVS volumes.capacity:storage: 10Gi # EVS disk capacity, in the unit of Gi. The value ranges from 1 to 32768 .csi:driver: disk.csi.everest.io # Dependent storage driver for the mountingfsType: ext4 # Must be the same as that of the original file system of the disk.volumeHandle: <your_volume_id> # EVS volume IDvolumeAttributes:everest.io/disk-mode: SCSI # Device type of the EVS disk. Only SCSI is supported.everest.io/disk-volume-type: SAS # EVS disk typestorage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisionereverest.io/crypt-key-id: <your_key_id> # (Optional) Encryption key ID. Mandatory for an encrypted disk.everest.io/enterprise-project-id: <your_enterprise_project_id> # (Optional) Enterprise project ID of the EVS disk. Ensure that the enterprise project ID specified during PVC creation is the same as that in the PV. Otherwise, the PVC cannot be bound to the PV.persistentVolumeReclaimPolicy: Delete # Reclaim policystorageClassName: csi-disk # StorageClass name. The value must be csi-disk for EVS disks.mountOptions: [] # Mount options
Параметр | Обязательно | Описание |
|---|---|---|
everest.io/reclaim-policy: retain-volume-only | Нет | Поддерживается только retain-volume-only. Этот параметр действителен только при версии Everest 1.2.9 или более новой и когда политика возврата ресурсов Delete. Если политика возврата ресурсов Delete и текущее значение retain-volume-only, связанный PV будет удалён, а базовый том хранения сохранён, когда PVC удаляется. |
failure-domain.beta.kubernetes.io/region | Да | Регион, в котором находится кластер. Подробную информацию о его значении см. в Regions and Endpoints. |
failure-domain.beta.kubernetes.io/zone | Да | Зона доступности, в которой создан том EVS. Она должна совпадать с зоной доступности, запланированной для рабочей нагрузки. Для получения подробной информации о его значении см. Regions and Endpoints. |
fsType | Yes | Тип файловой системы, по умолчанию ext4. |
volumeHandle | Yes | Идентификатор тома EVS‑диска. Войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Нажмите имя целевого EVS‑диска, чтобы перейти на страницу его сведений. На вкладке Summary нажмите кнопку копирования после ID. |
everest.io/disk-volume-type | Yes | Тип EVS‑диска. Все буквы в верхнем регистре. |
everest.io/crypt-key-id | Нет | Обязательно, если EVS‑диск зашифрован. Введите идентификатор ключа шифрования, выбранный при создании EVS‑диска. Чтобы получить идентификатор ключа шифрования, войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Щелкните название целевого EVS‑диска, чтобы перейти на страницу его сведений. На вкладке Summary скопируйте значение KMS Key ID в области Configuration Information. |
everest.io/enterprise-project-id | Нет | Введите идентификатор проекта предприятия, в котором создан EVS‑диск. Применяется только к корпоративным учетным записям с включенными проектами предприятия. Если указан идентификатор проекта предприятия, при создании PVC необходимо указать тот же идентификатор проекта предприятия. В противном случае PVC не сможет привязаться к PV. Чтобы получить идентификатор проекта предприятия, войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Щелкните название целевого EVS‑диска, чтобы перейти на страницу его сведений. На вкладке Summary щелкните проект предприятия в Management Information, чтобы открыть консоль проекта предприятия. Скопируйте соответствующий идентификатор, чтобы получить идентификатор проекта предприятия, к которому относится EVS‑диск. |
persistentVolumeReclaimPolicy | Да | Политика возврата поддерживается, если версия кластера 1.19.10 или новее и версия Everest 1.2.9 или новее. Поддерживаются политики возврата Delete и Retain. Подробнее см. PV Reclaim Policy. Если требуется высокая защита данных, выберите Retain, чтобы предотвратить случайное удаление данных. Delete:
Retain: При удалении PVC как PV, так и связанные ресурсы хранилища будут сохранены. Вам необходимо вручную удалить эти ресурсы. После удаления PVC PV переходит в состояние Released и не может быть привязан к PVC повторно. Если вы хотите продолжить использовать связанные ресурсы хранилища, сначала удалите PV. Затем создайте новый PV и PVC и свяжите их с связанными ресурсами хранилища. |
storageClassName | Yes | Имя StorageClass, которое является csi-disk для диска EVS. |
mountOptions | No | Mount options. Для получения подробностей см. Configuring EVS Mount Options. |
kubectl apply -f pv-evs.yaml
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: pvc-evsnamespace: defaultannotations:everest.io/disk-volume-type: SAS # EVS disk typeeverest.io/crypt-key-id: <your_key_id> # (Optional) Encryption key ID. Mandatory for an encrypted disk.everest.io/enterprise-project-id: <your_enterprise_project_id> # (Optional) Enterprise project ID of the EVS disk. Ensure that the enterprise project ID specified during PVC creation is the same as that in the PV. Otherwise, the PVC cannot be bound to the PV.labels:failure-domain.beta.kubernetes.io/region: <your_region> # Region of the node where the application is to be deployedfailure-domain.beta.kubernetes.io/zone: <your_zone> # AZ of the node where the application is to be deployedspec:accessModes:- ReadWriteOnce # The value must be ReadWriteOnce for EVS disks.resources:requests:storage: 10Gi # EVS disk capacity, ranging from 1 to 32768 . The value must be the same as the storage size of the existing PV.storageClassName: csi-disk # The StorageClass is EVS.volumeName: pv-evs # PV name
Параметр | Обязательно | Описание |
|---|---|---|
failure-domain.beta.kubernetes.io/region | Да | Регион, в котором расположен кластер. Для получения подробной информации о его значении см. Regions and Endpoints. |
failure-domain.beta.kubernetes.io/zone | Да | Зона, в которой создан EVS volume. Она должна совпадать с зоной, запланированной для рабочей нагрузки. Для получения подробной информации о его значении см. Regions and Endpoints. |
storage | Да | Запрошенный объём в PVC, в Gi. Значение должно совпадать с размером хранилища существующего PV. |
volumeName | Да | Имя PV, которое должно совпадать с именем PV в 1. |
storageClassName | Да | Имя StorageClass, которое должно совпадать с StorageClass PV в 1. Имя StorageClass для томов EVS — csi-disk. |
kubectl apply -f pvc-evs.yaml
apiVersion: apps/v1kind: StatefulSetmetadata:name: web-evsnamespace: defaultspec:replicas: 1 # The number of workload replicas that use the EVS volume must be 1.selector:matchLabels:app: web-evsserviceName: web-evs # Headless Service nametemplate:metadata:labels:app: web-evsspec:containers:- name: container-1image: nginx:latest # Replace it with the correct image path for your application.volumeMounts:- name: pvc-disk # Volume name, which must be the same as the volume name in the volumes fieldmountPath: /data # Location where the storage volume is mountedimagePullSecrets:- name: default-secretvolumes:- name: pvc-disk # Volume name, which is user-definedpersistentVolumeClaim:claimName: pvc-evs # Name of the created PVC---apiVersion: v1kind: Servicemetadata:name: web-evs # Headless Service namenamespace: defaultlabels:app: web-evsspec:selector:app: web-evsclusterIP: Noneports:- name: web-evstargetPort: 80nodePort: 0port: 80protocol: TCPtype: ClusterIP
kubectl apply -f web-evs.yaml
После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence.
kubectl get pod | grep web-evs
Ожидаемый вывод:
kubectl exec web-evs-0 -- df | grep data
Ожидаемый вывод:
/dev/sdc 10255636 36888 10202364 0% /data
kubectl exec web-evs-0 -- ls /data
Ожидаемый вывод:
lost+found
kubectl exec web-evs-0 -- touch /data/static
kubectl exec web-evs-0 -- ls /data
Ожидаемый вывод:
lost+foundstatic
kubectl delete pod web-evs-0
Ожидаемый вывод:
pod "web-evs-0" deleted
kubectl exec web-evs-0 -- ls /data
Ожидаемый вывод:
lost+foundstatic
Файл static сохраняется, что указывает на возможность постоянного хранения данных в томе EVS.
Вы также можете выполнить операции, перечисленные в Table 4.
Операция | Описание | Процедура |
|---|---|---|
Создание тома хранения (PV) | Создайте PV в консоли CCE. |
|
Увеличение ёмкости диска EVS | Быстро увеличьте ёмкость смонтированного тома EVS в консоли CCE. |
|
Просмотр событий | Просмотрите имена событий, типы событий, количество повторений, события Kubernetes, время первого появления и время последнего появления PVC или PV. |
|
Просмотр YAML‑файла | Просмотрите, скопируйте или загрузите YAML‑файл PVC или PV. |
|
Редактирование политики возврата | Измените политику возврата PV. |
|
Синхронизация ёмкости PVC | Если базовое хранилище превышает размер PVC, измените ёмкость PVC в консоли CCE, чтобы она соответствовала новому размеру. |
|