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 может быть подключен только к одной рабочей нагрузке. |
Путь монтирования | Введите путь монтирования, например, /tmp. Этот параметр указывает путь контейнера, в который будет монтироваться том данных. Не монтируйте том в системный каталог, такой как / или /var/run. Это может привести к ошибкам контейнера. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании рабочей нагрузки. Если том монтируется в каталог с высоким уровнем риска, используйте учетную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким уровнем риска на хосте могут быть повреждены. |
Subpath | Введите подкаталог тома хранилища и смонтируйте путь в томе хранилища к контейнеру. Таким образом, разные папки одного тома хранилища могут использоваться в одном pod. tmp, например, указывает, что данные в пути монтирования контейнера хранятся в папке tmp тома хранилища. Если этот параметр оставить пустым, по умолчанию будет использоваться корневой путь. |
Permission |
|
В этом примере диск монтируется в путь /data контейнера. Данные контейнера, созданные в этом пути, хранятся на диске EVS.
Несколько неразделяемый диск EVS может быть подключен только к одному workload pod. Если существует несколько pod, дополнительные pod не могут запуститься корректно. Убедитесь, что количество workload 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, which must be ReadWriteOnce for EVS diskscapacity:storage: 10Gi # EVS disk capacity, in the unit of GiB. 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 | No | Необязательно. Поддерживается только retain-volume-only. Этот параметр действителен только когда версия Everest 1.2.9 или новее и политика возврата ресурсов Delete. Если политика возврата ресурсов Delete и текущее значение retain-volume-only, связанный PV будет удалён, а базовый том хранения будет сохранён, когда PVC удаляется. |
failure-domain.beta.kubernetes.io/region | Yes | Регион, в котором расположен кластер. Подробную информацию о его значении см. в Regions and Endpoints. |
failure-domain.beta.kubernetes.io/zone | Yes | AZ, в котором создаётся EVS volume. Он должен совпадать с AZ, запланированным для рабочей нагрузки. Для получения подробностей о его значении см. Regions and Endpoints. |
fsType | Yes | Тип файловой системы, по умолчанию ext4. |
volumeHandle | Yes | ID тома EVS‑диска. Чтобы получить ID тома, войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Нажмите название целевого EVS‑диска, чтобы открыть страницу его сведений. На вкладке Summary нажмите кнопку копирования после ID. |
everest.io/disk-volume-type | Yes | Тип EVS‑диска. Все буквы в верхнем регистре. |
everest.io/crypt-key-id | No | Обязательно, если EVS‑диск зашифрован. Введите идентификатор ключа шифрования, выбранный при создании EVS‑диска. Чтобы получить идентификатор ключа шифрования, войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Щелкните имя целевого EVS‑диска, чтобы открыть страницу его сведений. На вкладке Summary скопируйте значение KMS Key ID в области Configuration Information. |
everest.io/enterprise-project-id | No | Этот параметр указывает идентификатор проекта предприятия, в котором создаётся EVS‑диск. Он применим только к корпоративным учётным записям с включёнными проектами предприятия. Если указан проект предприятия, при создании PVC необходимо указать тот же проект предприятия. В противном случае PVC не сможет привязаться к PV. To obtain an enterprise project 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 enterprise project in Management Information to access the enterprise project console. Copy the corresponding ID to obtain the ID of the enterprise project to which the EVS disk belongs. |
persistentVolumeReclaimPolicy | Yes | Политика возврата поддерживается, если версия кластера 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 | Yes | Регион, в котором расположен кластер. Для получения подробной информации о его значении см. Regions and Endpoints. |
failure-domain.beta.kubernetes.io/zone | Yes | Зона, в которой создан том EVS. Она должна совпадать с зоной, запланированной для рабочей нагрузки. Для получения подробной информации о его значении см. Regions and Endpoints. |
storage | Yes | Запрошенный объём в PVC, в Gi. Значение должно совпадать с размером хранилища существующего PV. |
volumeName | Yes | Имя 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:latestvolumeMounts:- 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 в консоли CCE, чтобы он соответствовал новому размеру. |
|