В этом разделе описывается, как автоматически создать OBS Бакет. Он применяется, когда нет доступного базового тома хранилища.
Параметр | Описание |
|---|---|
PVC Type | В этом примере выберите OBS. |
PVC Name | Введите имя PVC, которое должно быть уникальным в namespace. |
Creation Method |
В этом примере выберите Dynamically provision. |
Storage Classes | Имя StorageClass по умолчанию для томов OBS — csi-obs. Вы можете настроить StorageClass и сконфигурировать его политику возврата и режим привязки. Подробности см. в Creating a StorageClass Through the Console. |
(Optional) Storage Volume Name Prefix | Доступно только при версии кластера v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 или более новой, а также при установленном в кластере Everest v2.4.15 или более новой версии. Этот параметр задаёт имя автоматически создаваемого подложного хранилища. Фактическое имя подложного хранилища формируется по шаблону «Storage volume name prefix + PVC UID». Если параметр оставлен пустым, будет использован префикс по умолчанию pvc. Например, если префикс имени тома хранилища установлен в test, фактическое имя подложного хранилища будет test-{UID}. |
Instance Type |
|
OBS Class | Вы можете выбрать следующие типы object bucket: |
Access Mode | OBS volumes поддерживают только ReadWriteMany, что означает, что том хранилища может быть смонтирован на несколько узлов в режиме чтения/записи. Подробнее см. Volume Access Modes. |
Access Key (AK/SK) |
ВНИМАНИЕ: Если AK/SK будет удалён или отключён случайно, контейнер не сможет использовать OBS‑том. |
Enterprise Project | Этот параметр доступен только для Enterprise accounts с включёнными Enterprise projects. Enterprise project может быть проектом по умолчанию, проектом, в котором находится кластер, или проектом, указанным в StorageClass. |
Тег ресурса | Вы можете добавлять теги ресурсов для классификации ресурсов. Это поддерживается только при версии Everest в кластере 2.4.204 или более новой. ПРИМЕЧАНИЕ: После создания динамического PV типа OBS теги ресурсов нельзя обновить в консоли CCE. Чтобы обновить теги OBS, перейдите в консоль OBS. |
Вы можете выбрать Storage в панели навигации и просмотреть созданные PVC и PV на вкладках PVCs и PVs соответственно.
Подключайте и используйте тома хранения. Подробную информацию о параметрах см. в Table 1. О других параметрах см. в Workloads.
Параметр | Описание |
|---|---|
PVC | Выберите существующий том OBS. |
Mount Path | Введите путь монтирования, например, /tmp. Этот параметр указывает путь контейнера, в который будет монтироваться том данных. Не монтируйте том в системный каталог, например / или /var/run. Это может привести к ошибкам контейнера. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании рабочей нагрузки. Если том монтируется в каталог с высоким уровнем риска, используйте учётную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким уровнем риска на хосте могут быть повреждены. |
Subpath | Введите под‑путь тома хранения и смонтируйте путь в томе к контейнеру. Таким образом, разные папки одного тома хранения могут использоваться в одном pod. tmp, например, указывает, что данные в пути монтирования контейнера хранятся в папке tmp тома хранения. Если параметр оставлен пустым, по умолчанию будет использоваться корневой путь. |
Permission |
|
В этом примере диск монтируется в путь /data контейнера. Данные контейнера, созданные в этом пути, сохраняются в OBS‑томе.
После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к 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 IDeverest.io/csi.volume-name-prefix: test # (Optional) Storage 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 | Yes | Instance type. Значение может быть obsfs или s3fs.
|
csi.storage.k8s.io/node-publish-secret-name | No | Custom secret name. (Recommended) Выберите эту опцию, если вы хотите назначить разные разрешения пользователей разным OBS storage devices. Для получения подробной информации см. Using a Custom Access Key (AK/SK) to Mount an OBS Volume. |
csi.storage.k8s.io/node-publish-secret-namespace | No | Пространство имён пользовательского секрета. |
everest.io/enterprise-project-id | Нет | Этот параметр указывает идентификатор корпоративного проекта, в котором создаётся том OBS. Применяется только к корпоративным учетным записям с включёнными корпоративными проектами. Чтобы получить идентификатор корпоративного проекта, войдите в консоль EPS, нажмите название целевого корпоративного проекта и скопируйте идентификатор корпоративного проекта. |
everest.io/csi.volume-name-prefix | Нет | (Необязательно) Этот параметр доступен только при версии кластера v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 или более новой, а также при установленном в кластере Everest версии v2.4.15 или более новой. Этот параметр указывает имя базового хранилища, которое создаётся автоматически. Фактическое имя базового хранилища имеет формат «Storage volume name prefix + PVC UID». Если параметр оставлен пустым, будет использован префикс по умолчанию pvc. Введите от 1 до 26 символов, которые не могут начинаться или заканчиваться дефисом (-). Разрешены только строчные буквы, цифры и дефисы (-). Например, если префикс имени тома хранилища установлен в test, фактическое имя базового хранилища будет test-{UID}. |
storage | Да | Запрашиваемая ёмкость в PVC, в Gi. Для OBS этот параметр используется только для проверки. Он не должен быть пустым или 0, его значение фиксировано и равно 1. Любое установленное вами значение не будет применено. |
storageClassName | Да | Имя StorageClass, которое является csi-obs для тома OBS. |
everest.io/obs-volume-tags | Нет | (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 Пода.
Ожидаемый вывод:
sharestatic
kubectl exec -n <namespace> web-demo-846b489584-wvv5s -- ls /data
Ожидаемый вывод:
sharestatic
После создания файла в пути /data Пода, если файл также создаётся в пути /data другого Пода, два Пода используют один и тот же том.
Вы также можете выполнить операции, перечисленные в Table 3.
Операция | Описание | Процедура |
|---|---|---|
Обновление ключа доступа | Обновите ключ доступа к object storage в консоли CCE. |
|
Просмотр событий | Просмотрите имена событий, типы событий, количество вхождений, события Kubernetes, время первого появления и время последнего появления PVC или PV. |
|
Просмотр YAML‑файла | Просмотрите, скопируйте или загрузите YAML‑файл PVC или PV. |
|
Редактирование политики возврата | Изменить политику возврата PV. |
|