CCE позволяет создавать PV, используя существующий EVS disk. После создания PV вы можете создать PVC и привязать его к PV. Этот метод подходит для сценариев, когда доступно базовое хранилище.
Для кластеров v1.19.10 и более новых, если используется политика HPA для масштабирования рабочей нагрузки с подключёнными томами EVS, новый pod не может быть запущен, потому что EVS диски нельзя присоединять.
Параметр | Описание |
|---|---|
Тип PVC | В этом примере выберите EVS. |
Имя PVC | Введите имя PVC, которое должно быть уникальным в пространстве имён. |
Метод создания |
В этом примере выберите 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.
Parameter | Description |
|---|---|
PVC | Выберите существующий том EVS. Том EVS может быть подключен только к одной рабочей нагрузке. |
Mount Path | Введите путь монтирования, например, /tmp. Этот параметр указывает путь контейнера, в который будет монтироваться том данных. Не монтируйте том в системный каталог, например / или /var/run. Это может привести к ошибкам контейнера. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании рабочей нагрузки. Если том монтируется в каталог с высоким уровнем риска, используйте учетную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким уровнем риска на хосте могут быть повреждены. |
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. If an enterprise project is specified, you must specify the same enterprise project when creating a PVC. Otherwise, the PVC cannot bind to a 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‑диска. To obtain a volume ID, log in to the Cloud Server Console. In the navigation pane, choose Elastic Volume Service > Disks. Click the name of the target EVS disk to go to its details page. On the Summary tab, click the copy button after 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, чтобы перейти в консоль проекта предприятия. Скопируйте соответствующий идентификатор, чтобы получить ID проекта предприятия, к которому относится диск 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 | Параметры монтирования. Подробнее см. 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. If an enterprise project is specified during PV creation, you must specify the same enterprise project when creating a PVC. 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. Она должна совпадать с зоной, запланированной для рабочей нагрузки. Для получения подробной информации о его значении см. Regions and Endpoints. |
storage | Да | Запрошенный объём в PVC, в Gi. Значение должно совпадать с размером хранилища существующего PV. |
volumeName | Да | Имя PV, которое должно совпадать с именем PV в 1. |
storageClassName | Yes | Имя 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 volume в консоли CCE. |
|
Просмотр событий | Просмотрите имена событий, типы событий, количество повторений, события Kubernetes, время первого появления и время последнего появления PVC или PV. |
|
Просмотр YAML‑файла | Просмотрите, скопируйте или загрузите YAML‑файл PVC или PV. |
|
Редактирование политики возврата | Измените политику возврата PV. |
|
Синхронизация ёмкости PVC | Если базовое хранилище превышает размер PVC, измените ёмкость PVC в консоли CCE, чтобы она соответствовала новому размеру. |
|