При развертывании приложений в CCE cluster обычно требуется постоянное объектное хранилище для данных сервисов. Без динамического выделения вам необходимо вручную создать bucket в OBS console и определить PV и PVC в кластере. Этот процесс сложен. Чтобы упростить его, можно использовать динамическое выделение томов: объявите StorageClass в вашем PVC, и OBS buckets автоматически создаются, при этом PV генерируются и привязываются по требованию. Это обеспечивает модель оплаты по использованию, объектное хранилище по запросу. В этом разделе описывается, как использовать объектное хранилище через динамические PV в CCE.
Dynamic OBS volume provisioning — это автоматизированный процесс, управляемый драйвером Everest CSI, который обрабатывает создание bucket, генерацию PV и привязку. Основной процесс выглядит следующим образом.
Динамическое выделение для OBS Buckets | Описание |
|---|---|
|
|
Parameter | Description |
|---|---|
PVC Type | В этом примере выберите OBS. |
PVC Name | Введите имя PVC, которое должно быть уникальным в пространстве имён. |
Creation Method |
В этом примере выберите Dynamically provision. |
Storage Classes | Имя StorageClass по умолчанию для томов OBS — csi-obs. Вы можете настроить StorageClass и сконфигурировать его политику возврата и режим привязки. Для получения подробной информации см. Basic StorageClass Settings. |
(Optional) Префикс имени тома хранилища | Доступно только при версии кластера v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 или более новой, а также при установленном в кластере Everest версии v2.4.15 или более новой. Этот параметр указывает имя базового хранилища, которое создаётся автоматически. Фактическое имя базового хранилища имеет формат «Префикс имени тома хранилища + PVC UID». Если параметр оставлен пустым, будет использован префикс по умолчанию pvc. Например, если префикс имени тома хранилища установлен в test, фактическое имя базового хранилища будет test-{UID}. |
Тип инстанса |
|
OBS Class | Вы можете выбрать следующие типы object bucket: |
Access Mode | OBS volumes support only ReadWriteMany, указывая, что том хранения может быть смонтирован к нескольким узлам в режиме чтения/записи. Подробнее см. Volume Access Modes. |
AK/SK |
CAUTION: Если AK/SK будет удалён или отключён случайно, контейнер не сможет использовать OBS‑том. |
Enterprise Project | Корпоративный проект управляет несколькими ресурсами по категориям. Ресурсы и проекты в разных регионах облачных сервисов могут быть объединены в один корпоративный проект. Например, предприятие может классифицировать ресурсы по отделам или группам проектов и разместить соответствующие ресурсы в одном корпоративном проекте для единого управления. Этот параметр доступен только для корпоративных аккаунтов с включёнными корпоративными проектами. |
Resource Tag | Вы можете добавлять теги ресурсов для классификации ресурсов. Это поддерживается только при версии Everest в кластере 2.4.204 или более новой. NOTE: После создания динамического PV типа OBS теги ресурсов нельзя обновить в консоли CCE. Чтобы обновить теги ресурсов OBS, перейдите в консоль OBS. |
Вы можете выбрать Storage в панели навигации и просмотреть созданные PVC и PV на вкладках PVCs и PVs соответственно.
Подключите и используйте тома хранилища. Подробную информацию о параметрах см. в Table 1. О других параметрах см. в Workloads.
Parameter | Description |
|---|---|
PVC | Select существующий OBS volume. |
Mount Path | Enter путь монтирования, например, /tmp. Этот параметр указывает путь контейнера, в который будет монтироваться диск с данными. Не монтируйте диск в системный каталог, такой как / или /var/run. Это может привести к ошибкам контейнера. Монтируйте диск в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании рабочей нагрузки. Если диск монтируется в каталог с высоким уровнем риска, используйте учётную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким уровнем риска на хосте могут быть повреждены. |
Subpath | Введите под‑путь тома хранилища и смонтируйте путь в томе к контейнеру. Таким образом, разные папки одного тома хранилища могут использоваться в одном pod. tmp, например, указывает, что данные в пути монтирования контейнера хранятся в папке tmp тома хранилища. Если этот параметр оставить пустым, по умолчанию будет использоваться корневой путь. |
Permission |
|
В этом примере диск смонтирован в путь /data контейнера. Данные контейнера, созданные в этом пути, хранятся в OBS volume.
После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence and Sharing.
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: pvc-obs-autonamespace: defaultannotations:everest.io/obs-volume-type: STANDARD # Object storage typecsi.storage.k8s.io/fstype: obsfs # Instance typecsi.storage.k8s.io/node-publish-secret-name: <your_secret_name> # Custom secret namecsi.storage.k8s.io/node-publish-secret-namespace: <your_namespace> # Namespace of the custom secreteverest.io/enterprise-project-id: <your_enterprise_project_id> # (Optional) Enterprise project ID of the new OBS volumeeverest.io/csi.volume-name-prefix: test # (Optional) Volume name prefix of the automatically-created underlying storagespec:accessModes:- ReadWriteMany # The value must be ReadWriteMany for OBS volumes.resources:requests:storage: 1Gi # OBS volume capacitystorageClassName: csi-obs # The StorageClass is OBS.
Параметр | Обязательно | Описание |
|---|---|---|
everest.io/obs-volume-type | Да | OBS StorageClass.
|
csi.storage.k8s.io/fstype | Да | Тип инстанса. Значение может быть obsfs или s3fs.
|
csi.storage.k8s.io/node-publish-secret-name | Нет | Пользовательское имя секрета. (Рекомендуется) Выберите эту опцию, если хотите назначить разные разрешения пользователей для разных OBS‑устройств хранения. Для получения подробной информации см. Using a Custom Access Key (AK/SK) to Mount an OBS Volume. |
csi.storage.k8s.io/node-publish-secret-namespace | Нет | Пространство имён пользовательского секрета. |
everest.io/enterprise-project-id | Нет | Идентификатор проекта предприятия, в котором создаётся том OBS. Применяется только к корпоративным учётным записям с включёнными проектами предприятия. Чтобы получить идентификатор проекта предприятия, войдите в консоль EPS, нажмите название целевого проекта предприятия и скопируйте идентификатор проекта предприятия. |
everest.io/csi.volume-name-prefix | No | (Optional) Этот параметр доступен только когда версия кластера v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 или более новая, и в кластере установлен Everest v2.4.15 или более новая. Этот параметр указывает имя базового хранилища, которое создаётся автоматически. Фактическое имя базового хранилища имеет формат «Префикс имени тома хранилища + PVC UID». Если параметр оставлен пустым, будет использован префикс по умолчанию pvc. Введите от 1 до 26 символов, которые не могут начинаться или заканчиваться дефисом (-). Допустимы только строчные буквы, цифры и дефисы (-). Например, если префикс имени тома хранилища установлен в test, фактическое имя базового хранилища будет test-{UID}. |
storage | Yes | Запрашиваемая ёмкость в PVC, в Gi. Для OBS этот параметр используется только для проверки. Он не должен быть пустым или 0, его значение фиксировано на 1. Любое установленное вами значение не вступит в силу. |
storageClassName | Yes | Имя StorageClass, которое равно csi-obs для OBS‑тома. |
everest.io/obs-volume-tags | No | (Optional) Этот параметр поддерживается, когда версия Everest в кластере 2.4.204 или более новая. Вы можете добавить теги ресурсов для классификации ресурсов. Вы можете создать predefined tags в консоли TMS. Эти теги доступны всем ресурсам, поддерживающим теги. Вы можете использовать эти теги для повышения эффективности создания тегов и миграции ресурсов. |
kubectl apply -f pvc-obs-auto.yaml
apiVersion: apps/v1kind: Deploymentmetadata:name: web-demonamespace: defaultspec:replicas: 2selector:matchLabels:app: web-demotemplate:metadata:labels:app: web-demospec:containers:- name: container-1image: nginx:latestvolumeMounts:- name: pvc-obs-volume # 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-obs-volume # Volume name, which is user-definedpersistentVolumeClaim:claimName: pvc-obs-auto # Name of the created PVC
kubectl apply -f web-demo.yaml
После создания рабочей нагрузки вы можете попробовать Verifying Data Persistence and Sharing.
kubectl get pod -n <namespace> | grep web-demo
Ожидаемый вывод:
kubectl exec -n <namespace> web-demo-846b489584-mjhm9 -- ls /datakubectl exec -n <namespace> web-demo-846b489584-wvv5s -- ls /data
Если для обоих pod'ов не получен результат, файл в пути /data не существует.
kubectl exec -n <namespace> web-demo-846b489584-mjhm9 -- touch /data/static
kubectl exec -n <namespace> web-demo-846b489584-mjhm9 -- ls /data
Ожидаемый вывод:
static
kubectl delete pod -n <namespace> web-demo-846b489584-mjhm9
Ожидаемый вывод:
pod "web-demo-846b489584-mjhm9" deleted
После удаления контроллер Deployment автоматически создает реплику.
kubectl get pod -n <namespace> | grep web-demo
Ожидаемый вывод выглядит следующим образом, где web-demo-846b489584-d4d4j — новый созданный pod:
kubectl exec -n <namespace> web-demo-846b489584-d4d4j -- ls /data
Ожидаемый вывод:
static
Файл static сохраняется, что указывает на возможность постоянного хранения данных.
kubectl get pod -n <namespace> | grep web-demo
Ожидаемый вывод:
kubectl exec -n <namespace> web-demo-846b489584-d4d4j -- touch /data/share
Проверьте файлы в пути /data pod.
Ожидаемый вывод:
sharestatic
kubectl exec -n <namespace> web-demo-846b489584-wvv5s -- ls /data
Ожидаемый вывод:
sharestatic
После создания файла в пути /data pod, если файл также создаётся в пути /data другого pod, два pod делятся одним и тем же томом.
Вы также можете выполнить операции, перечисленные в Table 3.
Операция | Описание | Процедура |
|---|---|---|
Обновление ключа доступа | Обновите ключ доступа к объектному хранилищу в консоли CCE. |
|
Просмотр событий | Просмотрите имена событий, типы событий, количество вхождений, события Kubernetes, время первого появления и время последнего появления PVC или PV. |
|
Просмотр YAML‑файла | Просмотрите, скопируйте или загрузите YAML‑файл PVC или PV. |
|
Редактирование политики возврата | Измените политику возврата PV. |
|