В этом разделе описывается, как автоматически создать 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) |
CAUTION: Если AK/SK будет удалён или отключён случайно, контейнер не сможет использовать OBS‑том. |
Enterprise Project | Этот параметр доступен только для корпоративных учётных записей с включёнными enterprise projects. enterprise project может быть проектом по умолчанию, проектом, в котором находится кластер, или проектом, указанным в StorageClass. |
Resource Tag | Вы можете добавлять resource tags для классификации ресурсов. Это поддерживается только при версии Everest в кластере v2.4.204 или более новой. Вы можете создать predefined tags в консоли TMS. Эти теги доступны всем ресурсам, поддерживающим теги. Вы можете использовать эти теги для повышения эффективности создания тегов и миграции ресурсов. NOTE: После создания динамического PV типа OBS теги ресурсов нельзя обновить в консоли CCE. Чтобы обновить OBS‑теги ресурсов, перейдите в консоль OBS. |
Вы можете выбрать Storage в панели навигации и просмотреть созданные PVC и PV на вкладках PVCs и PVs соответственно.
Подключите и используйте тома хранения. Для получения подробной информации о параметрах см. Table 1. Для остальных параметров см. Workloads.
Параметр | Описание |
|---|---|
PVC | Выберите существующий OBS‑том. |
Путь монтирования | Введите путь монтирования, например, /tmp. Этот параметр указывает путь контейнера, в который будет монтироваться том данных. Не монтируйте том в системный каталог, например / или /var/run. Это может привести к ошибкам контейнера. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании workload. Если том монтируется в каталог с высоким риском, используйте учётную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким риском на хосте могут быть повреждены. |
Подпуть | Введите подпуть тома хранения и смонтируйте путь тома в контейнер. Таким образом, разные папки одного тома хранения могут использоваться в одном pod. tmp, например, указывает, что данные в пути монтирования контейнера хранятся в папке tmp тома хранения. Если параметр оставлен пустым, по умолчанию будет использоваться корневой путь. |
Разрешение |
|
В этом примере диск монтируется в путь /data контейнера. Данные контейнера, генерируемые в этом пути, сохраняются в OBS‑томе.
После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence and Sharing.
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: pvc-obs-autonamespace: defaultannotations:everest.io/obs-volume-type: STANDARD # OBScsi.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.resources:requests:storage: 1Gi # OBS volume capacitystorageClassName: csi-obs # The StorageClass is OBS.
Параметр | Обязательно | Описание |
|---|---|---|
everest.io/obs-volume-type | Yes | OBS StorageClass.
|
csi.storage.k8s.io/fstype | Yes | Instance type. Значение может быть obsfs или s3fs.
|
csi.storage.k8s.io/node-publish-secret-name | No | Custom secret name. (Рекомендуется) Выберите эту опцию, если вы хотите назначить разные разрешения пользователей разным 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 | No | Этот параметр указывает идентификатор проекта предприятия, в котором создаётся 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 или более новой версии. Этот параметр указывает имя базового хранилища, которое создаётся автоматически. Фактическое имя базового хранилища имеет формат «Storage volume name prefix + 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 в кластере v2.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
Файл статический сохраняется, указывая, что данные могут храниться постоянно.
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. |
|