Облачная платформаAdvanced

Использование EVS Disk через динамический PV

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

CCE позволяет указать StorageClass для автоматического создания EVS disk и соответствующего PV. Эта функция применима, когда базовый том хранения недоступен.

Требования

Ограничения

  • EVS disks нельзя подключать между AZ и нельзя использовать несколькими рабочими нагрузками, несколькими pod‑ами одной рабочей нагрузки или несколькими задачами. Data sharing общего диска не поддерживается между узлами в кластере CCE. Если EVS disk подключён к нескольким узлам, могут возникнуть конфликты ввода‑вывода и конфликты кэша данных. Поэтому при создании Deployment, использующего EVS disks, выбирайте только один pod.
  • Для кластеров версии ниже v1.19.10, если используется политика HPA для масштабирования рабочей нагрузки с подключёнными EVS volumes, существующие pods не могут выполнять чтение или запись, когда новый pod планируется на другой узел.

    Для кластеров v1.19.10 и новее, если используется политика HPA для масштабирования рабочей нагрузки с подключёнными EVS volumes, новый pod не может быть запущен, поскольку EVS disks нельзя подключать.

  • К ресурсам, динамически создаваемым EVS disks, можно добавить теги. После создания EVS disks теги ресурсов нельзя обновить в CCE. Чтобы обновить их, перейдите в консоль EVS. Если вы используете существующий EVS disk для создания PV, также необходимо добавить или обновить теги ресурсов в консоли EVS.

Динамическое создание EVS Disk с помощью консоли

  1. Войдите в CCE console и нажмите название кластера, чтобы открыть консоль кластера.
  2. Динамически создайте PVC и PV.

    1. Choose Storage in the navigation pane. In the right pane, click the PVCs tab. Click Create PVC in the upper right corner. On the slide-out panel, configure PVC parameters.

      Параметр

      Описание

      Тип PVC

      В этом примере выберите EVS.

      Имя PVC

      Введите имя PVC, которое должно быть уникальным в пространстве имён.

      Метод создания

      • Если базовое хранилище недоступно, выберите Dynamically provision для создания PVC, PV и базового хранилища в консоли в каскадном режиме.
      • Если базовое хранилище доступно, создайте PV или используйте существующий PV для статического создания PVC. Подробности см. в Using an Existing EVS Disk Through a Static PV.

      В этом примере выберите Dynamically provision.

      Классы хранилища

      Классами StorageClasses по умолчанию для дисков EVS являются csi-disk и csi-disk-topology.

      ПРИМЕЧАНИЕ:

      Если вы используете csi-disk (EVS) StorageClass, PVC и PV будут созданы немедленно. Диск EVS создаётся вместе с PV, после чего PVC привязывается к PV.

      Если вы используете csi-disk-topology (EVS, создаваемый с задержкой) StorageClass, PV не будет создан сразу при создании PVC. Вместо этого сначала планируются pod‑ы, которые будут связаны с PVC, затем создаются диск EVS и PV, и в конце PV привязывается к PVC.

      Вы можете настроить 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}.

      AZ

      Выберите AZ диска EVS. AZ должен совпадать с AZ узла кластера.

      ПРИМЕЧАНИЕ:

      Диск EVS может быть смонтирован только на узел в том же AZ. После создания диска EVS его AZ изменить нельзя.

      Disk Type

      Выберите тип диска EVS. Типы дисков EVS различаются в зависимости от регионов. Получите доступные типы EVS в консоли.

      Capacity (GiB)

      Ёмкость запрашиваемого storage volume.

      Access Mode

      Тома EVS поддерживают только ReadWriteOnce, что означает, что storage volume может быть смонтирован к одному узлу в режиме чтения/записи. Подробнее см. Volume Access Modes.

      Encryption

      Настройте, следует ли шифровать базовое хранилище. Если вы выберете Enable, выберите целевой ключ или введите идентификатор ключа. Перед использованием шифрования проверьте, поддерживает ли регион, в котором находится EVS диск, шифрование дисков.

      Enterprise Project

      Этот параметр доступен только для корпоративных аккаунтов с включёнными enterprise projects. enterprise project может быть проектом по умолчанию, проектом, в котором находится кластер, или проектом, указанным в StorageClass.

      Resource Tag

      Вы можете добавлять resource tags для классификации ресурсов. Эта функция поддерживается только при версии Everest в кластере v2.1.39 или более новой.

      Вы можете создавать predefined tags в консоли TMS. Эти теги доступны всем ресурсам, поддерживающим теги. Вы можете использовать эти теги для повышения эффективности создания тегов и миграции ресурсов.

      CCE автоматически создаёт системные теги CCE-Cluster-ID={cluster-ID}, CCE-Cluster-Name={cluster-name} и CCE-Namespace={namespace-name}. Эти теги нельзя изменить.

      ПРИМЕЧАНИЕ:

      После создания динамического PV типа EVS теги ресурсов нельзя обновить в консоли CCE. Чтобы обновить эти теги ресурсов, перейдите в консоль EVS.

    2. Нажмите Create.

      Вы можете выбрать Storage в панели навигации и просмотреть созданные PVC и PV на вкладках PVCs и PVs соответственно.

  3. Создайте приложение.

    1. Выберите Workloads в панели навигации. В правой панели нажмите вкладку StatefulSets.
    2. Click Create Workload in the upper right corner. On the displayed page, click Data Storage in the Container Information area under Container Settings and choose Add Volume > PVC.

      Подключите и используйте тома хранилища. Подробную информацию о параметрах см. в Table 1. О других параметрах см. в Workloads.

      Table 1 Подключение тома хранения

      Параметр

      Описание

      PVC

      Выберите существующий том EVS.

      Том EVS может быть подключен только к одной рабочей нагрузке.

      Mount Path

      Введите путь монтирования, например, /tmp.

      Этот параметр указывает путь контейнера, в который будет подключён том данных. Не монтируйте том в системный каталог, такой как / или /var/run. Это может привести к ошибкам контейнера. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. В противном случае файлы будут заменены, что приведёт к сбоям при запуске контейнера или создании рабочей нагрузки.

      ПРИМЕЧАНИЕ:

      Если том монтируется в каталог с высоким уровнем риска, используйте учётную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким уровнем риска на хосте могут быть повреждены.

      Subpath

      Введите подкаталог тома хранения и смонтируйте путь в томе к контейнеру. Таким образом, разные папки одного тома хранения могут использоваться в одном pod. tmp, например, указывает, что данные в пути монтирования контейнера хранятся в папке tmp тома хранения. Если этот параметр оставить пустым, по умолчанию будет использоваться корневой путь.

      Permission

      • Read-only: Вы можете только читать данные в подключённых томах.
      • Read-write: Вы можете изменять тома данных, смонтированные в путь. Новые записанные данные не будут мигрированы, если контейнер будет мигрирован, что может привести к потере данных.

      В этом примере диск монтируется в путь /data контейнера. Данные контейнера, генерируемые в этом пути, сохраняются в EVS диск.

      Note

      Несовместный EVS диск может быть присоединён только к одному workload pod. Если существует несколько pod'ов, дополнительные pod'ы не смогут запуститься корректно. Убедитесь, что количество workload pod равно 1, если присоединён EVS диск.

    3. После настройки нажмите Create Workload.

      После создания workload данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence.

Динамическое создание диска EVS с помощью kubectl

  1. Используйте kubectl для доступа к кластеру.
  2. Используйте StorageClass для динамического создания PVC и PV.

    1. Создайте файл pvc-evs-auto.yaml.
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
      name: pvc-evs-auto
      namespace: default
      annotations:
      everest.io/disk-volume-type: SAS # EVS disk type
      everest.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
      everest.io/disk-volume-tags: '{"key1":"value1","key2":"value2"}' # (Optional) Custom resource tags
      everest.io/csi.volume-name-prefix: test # (Optional) Storage volume name prefix of the automatically-created underlying storage
      labels:
      failure-domain.beta.kubernetes.io/region: <your_region> # Region of the node where the application is to be deployed
      failure-domain.beta.kubernetes.io/zone: <your_zone> # AZ of the node where the application is to be deployed
      spec:
      accessModes:
      - ReadWriteOnce # The value must be ReadWriteOnce for EVS disks.
      resources:
      requests:
      storage: 10Gi # EVS disk capacity, ranging from 1 to 32768
      storageClassName: csi-disk # The StorageClass is EVS.
      Table 2 Ключевые параметры

      Параметр

      Обязательно

      Описание

      failure-domain.beta.kubernetes.io/region

      Да

      Регион, в котором расположен кластер.

      Для получения подробной информации о его значении см. Regions and Endpoints.

      failure-domain.beta.kubernetes.io/zone

      Yes

      Зона, в которой создан том EVS. Она должна совпадать с зоной, запланированной для рабочей нагрузки.

      Для получения подробной информации о его значении см. Regions and Endpoints.

      everest.io/disk-volume-type

      Yes

      Тип диска EVS. Все буквы в верхнем регистре.

      • SAS: Высокий I/O
      • SSD: Ультра‑высокий I/O
      • ESSD: Экстремальный SSD

      everest.io/crypt-key-id

      No

      Этот параметр обязателен, когда диск EVS зашифрован. Укажите идентификатор ключа шифрования, выбранный при создании диска EVS. Можно использовать пользовательский ключ или ключ по умолчанию с именем evs/default.

      Чтобы получить ID ключа, войдите в DEW console, найдите ключ для шифрования и скопируйте ID ключа.

      everest.io/enterprise-project-id

      No

      Этот параметр указывает ID enterprise project, в котором создаётся диск EVS. Он применим только к enterprise accounts с включёнными enterprise projects.

      Чтобы получить ID enterprise project, войдите в EPS console, нажмите название целевого enterprise project и скопируйте ID enterprise project.

      everest.io/disk-volume-tags

      No

      (Optional) Этот параметр поддерживается, когда версия Everest в кластере v2.1.39 или новее.

      Вы можете добавить теги ресурсов для классификации ресурсов.

      Вы можете создать predefined tags в консоли TMS. Эти теги доступны всем ресурсам, поддерживающим теги. Вы можете использовать эти теги для повышения эффективности создания тегов и миграции ресурсов.

      CCE автоматически создаёт системные теги CCE-Cluster-ID={cluster-ID}, CCE-Cluster-Name={cluster-name} и CCE-Namespace={namespace-name}. Эти теги нельзя изменить.

      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. Значение — целое число в диапазоне от 1 до 32768.

      Если storage задан в виде десятичного числа, значение будет округлено в большую сторону для диска EVS. Например, если storage установлен в 10.1Gi, будет создан диск EVS объёмом 11 GiB.

      storageClassName

      Yes

      Имя StorageClass, которое равно csi-disk для диска EVS.

    2. Выполните следующую команду для создания PVC:
      kubectl apply -f pvc-evs-auto.yaml

  3. Создайте приложение.

    1. Создайте файл с именем web-evs-auto.yaml. В этом примере том EVS монтируется в путь /data.
      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
      name: web-evs-auto
      namespace: default
      spec:
      replicas: 1
      selector:
      matchLabels:
      app: web-evs-auto
      serviceName: web-evs-auto # Headless Service name
      template:
      metadata:
      labels:
      app: web-evs-auto
      spec:
      containers:
      - name: container-1
      image: nginx:latest
      volumeMounts:
      - name: pvc-disk # Volume name, which must be the same as the volume name in the volumes field
      mountPath: /data # Location where the storage volume is mounted
      imagePullSecrets:
      - name: default-secret
      volumes:
      - name: pvc-disk # Volume name, which is user-defined
      persistentVolumeClaim:
      claimName: pvc-evs-auto # Name of the created PVC
      ---
      apiVersion: v1
      kind: Service
      metadata:
      name: web-evs-auto # Headless Service name
      namespace: default
      labels:
      app: web-evs-auto
      spec:
      selector:
      app: web-evs-auto
      clusterIP: None
      ports:
      - name: web-evs-auto
      targetPort: 80
      nodePort: 0
      port: 80
      protocol: TCP
      type: ClusterIP
    2. Выполните следующую команду для создания рабочей нагрузки, к которой монтируется том EVS:
      kubectl apply -f web-evs-auto.yaml

      После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к Verifying Data Persistence.

Verifying Data Persistence

  1. Просмотрите развернутое приложение и файлы EVS volume.

    1. Выполните следующую команду, чтобы просмотреть созданный pod:
      kubectl get pod | grep web-evs-auto

      Ожидаемый вывод:

      web-evs-auto-0 1/1 Running 0 38s

    2. Выполните следующую команду, чтобы проверить, смонтирован ли EVS volume в путь /data:
      kubectl exec web-evs-auto-0 -- df | grep data

      Ожидаемый вывод:

      /dev/sdc 10255636 36888 10202364 0% /data
    3. Выполните следующую команду, чтобы проверить файлы в пути /data:
      kubectl exec web-evs-auto-0 -- ls /data

      Ожидаемый вывод:

      lost+found

  2. Выполните следующую команду, чтобы создать файл с именем static в пути /data:

    kubectl exec web-evs-auto-0 -- touch /data/static

  3. Выполните следующую команду, чтобы проверить файлы в пути /data:

    kubectl exec web-evs-auto-0 -- ls /data

    Ожидаемый вывод:

    lost+found
    static

  4. Выполните следующую команду, чтобы удалить pod с именем web-evs-auto-0:

    kubectl delete pod web-evs-auto-0

    Ожидаемый вывод:

    pod "web-evs-auto-0" deleted

  5. После удаления контроллер StatefulSet автоматически создает реплику с тем же именем. Выполните следующую команду, чтобы проверить, изменились ли файлы в пути /data:

    kubectl exec web-evs-auto-0 -- ls /data

    Ожидаемый вывод:

    lost+found
    static

    Файл static сохраняется, что указывает на возможность постоянного хранения данных в EVS volume.

Связанные операции

Вы также можете выполнить операции, перечисленные в Table 3.

Table 3 Связанные операции

Операция

Описание

Процедура

Увеличение ёмкости диска EVS

Быстро увеличьте ёмкость подключённого тома EVS в консоли CCE.

  1. Выберите Storage в панели навигации. В правой панели нажмите PVCs tab. Нажмите More в столбце Operation целевого PVC и выберите Scale-out.
  2. Введите добавляемую ёмкость и нажмите OK.

Просмотр событий

Просмотрите имена событий, типы событий, количество повторений, события Kubernetes, время первого появления и время последнего появления PVC или PV.

  1. Выберите Storage в панели навигации. В правой панели нажмите PVCs или PVs tab.
  2. Найдите целевой PVC или PV и нажмите View Events в столбце Operation, чтобы просмотреть события, сгенерированные в течение одного часа (события хранятся в течение одного часа).

Просмотр файла YAML

Просмотр, копирование или загрузка YAML‑файла PVC или PV.

  1. Выберите Storage в панели навигации. В правой панели нажмите вкладку PVCs или PVs.
  2. Найдите целевой PVC или PV и нажмите View YAML в столбце Operation, чтобы просмотреть или загрузить YAML.

Редактирование политики возврата

Измените политику возврата PV.

  1. Выберите Storage в панели навигации. В правой панели нажмите вкладку PVs.
  2. Найдите целевой PV и выберите More > Edit Reclaim Policy в столбце Operation.

Синхронизация ёмкости PVC

Если базовое хранилище превышает размер PVC, измените ёмкость PVC в консоли CCE, чтобы она соответствовала новому размеру.

  1. Выберите Storage в панели навигации. В правой панели нажмите вкладку PVCs.
  2. Найдите целевой PVC и нажмите Synchronize в столбце Capacity, чтобы сделать ёмкость PVC согласованной с ёмкостью базового хранилища.

    Synchronize отображается только тогда, когда ёмкость базового хранилища превышает ёмкость PVC.