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

Использование существующего EVS Disk через статический PV

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

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

Требования

  • Вы создали кластер и установили дополнение CCE Container Storage (Everest) в кластере.
  • Вы создали EVS disk, соответствующий следующим требованиям:
    • EVS disk не может быть системным диском или общим диском.
    • EVS disk должен быть типа SCSI (тип диска по умолчанию — VBD при покупке EVS disk).
    • EVS disk должен быть доступен и не использоваться другими ресурсами.
    • Зона доступности (AZ) EVS disk должна совпадать с зоной доступности узла кластера. В противном случае EVS disk нельзя будет смонтировать, и pod не запустится.
    • Если EVS disk зашифрован, ключ должен быть доступен.
    • Если в вашей учетной записи включены корпоративные проекты, вы можете выбирать только EVS disks в корпоративном проекте, к которому относится кластер, либо в проекте по умолчанию.
    • EVS disks, которые были разделены, не поддерживаются.
    • Поддерживаются только EVS disks формата ext4.
  • Для создания кластера с помощью команд убедитесь, что используется kubectl. Подробности см. в Accessing a Cluster Using kubectl.

Ограничения

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

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

Использование существующего EVS диска через консоль

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

    1. Выберите Storage в панели навигации. На правой панели нажмите вкладку PVCs. Нажмите Create PVC в правом верхнем углу. На выдвижной панели настройте параметры PVC.

      Параметр

      Описание

      Тип PVC

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

      Имя PVC

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

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

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

      В этом примере выберите 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.

      Note

      a: Параметр доступен, когда Creation Method установлен в значение Use existing.

      b: Параметр доступен, когда Creation Method установлен в значение Create new.

    2. нажмите Create чтобы создать PVC и PV.

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

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

    1. Выберите Workloads в панели навигации. В правой панели нажмите вкладку StatefulSets.
    2. нажмите Create Workload в правом верхнем углу. На отображаемой странице нажмите Data Storage в области Container Information под Container Settings и выберите Add Volume > PVC.

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

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

      Parameter

      Description

      PVC

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

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

      Mount Path

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

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

      УВЕДОМЛЕНИЕ:

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

      Subpath

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

      Permission

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

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

      Note

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

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

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

Использование существующего диска EVS через kubectl

  1. Используйте kubectl для доступа к кластеру.
  2. Создайте PV. Если PV уже создан в вашем кластере, пропустите этот шаг. При использовании YAML‑файла для создания PV не используйте параметры, не объявленные в файле, такие как status, spec.claimRef и annotation.everest.io/set-disk-metadata. В противном случае PV может стать аномальным.

    1. Создайте pv-evs.yaml файл.
      apiVersion: v1
      kind: PersistentVolume
      metadata:
      annotations:
      pv.kubernetes.io/provisioned-by: everest-csi-provisioner
      everest.io/reclaim-policy: retain-volume-only # (Optional) The underlying volume is retained when the PV is deleted.
      name: pv-evs # PV name
      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 # Access mode. The value must be ReadWriteOnce for EVS volumes.
      capacity:
      storage: 10Gi # EVS disk capacity, in the unit of Gi. The value ranges from 1 to 32768 .
      csi:
      driver: disk.csi.everest.io # Dependent storage driver for the mounting
      fsType: ext4 # Must be the same as that of the original file system of the disk.
      volumeHandle: <your_volume_id> # EVS volume ID
      volumeAttributes:
      everest.io/disk-mode: SCSI # Device type of the EVS disk. Only SCSI is supported.
      everest.io/disk-volume-type: SAS # EVS disk type
      storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
      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. 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 policy
      storageClassName: csi-disk # StorageClass name. The value must be csi-disk for EVS disks.
      mountOptions: [] # Mount options
      Таблица 2 Ключевые параметры

      Параметр

      Обязательно

      Описание

      everest.io/reclaim-policy: retain-volume-only

      Нет

      Поддерживается только retain-volume-only.

      Этот параметр действителен только когда версия Everest 1.2.9 или новее и политика возврата ресурсов Delete. Если политика возврата ресурсов Delete и текущее значение retain-volume-only, связанный PV удаляется, а базовый том хранения сохраняется, когда удаляется PVC.

      failure-domain.beta.kubernetes.io/region

      Да

      Регион, в котором находится кластер.

      Подробную информацию о его значении см. в Regions and Endpoints.

      failure-domain.beta.kubernetes.io/zone

      Да

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

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

      fsType

      Yes

      Тип файловой системы, по умолчанию ext4.

      volumeHandle

      Yes

      Идентификатор тома EVS‑диска.

      To obtain a volume 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 copy button after ID.

      everest.io/disk-volume-type

      Yes

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

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

      everest.io/crypt-key-id

      Нет

      Обязательно, если диск EVS зашифрован. Введите идентификатор ключа шифрования, выбранный при создании диска EVS.

      Чтобы получить идентификатор ключа шифрования, войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Щелкните имя целевого диска EVS, чтобы открыть его страницу сведений. На вкладке Summary скопируйте значение KMS Key ID в области Configuration Information.

      everest.io/enterprise-project-id

      Нет

      Этот параметр указывает идентификатор проекта предприятия, в котором создаётся диск EVS. Применяется только к корпоративным учётным записям с включёнными проектами предприятия.

      Если указан проект предприятия, при создании PVC необходимо указать тот же проект предприятия. В противном случае PVC не сможет привязаться к PV.

      Чтобы получить идентификатор проекта предприятия, войдите в Cloud Server Console. В панели навигации выберите Elastic Volume Service > Disks. Щелкните имя целевого диска EVS, чтобы открыть его страницу сведений. На вкладке Summary щелкните проект предприятия в Management Information, чтобы перейти в консоль проекта предприятия. Скопируйте соответствующий идентификатор, чтобы получить ID проекта предприятия, к которому относится диск EVS.

      persistentVolumeReclaimPolicy

      Да

      Политика возврата поддерживается, если версия кластера 1.19.10 или новее и версия Everest 1.2.9 или новее.

      Поддерживаются политики возврата Delete и Retain. Подробнее см. PV Reclaim Policy. Если требуется высокая защита данных, выберите Retain, чтобы предотвратить случайное удаление данных.

      Delete:

      • Если everest.io/reclaim-policy не указана, при удалении PVC будут удалены как PV, так и диск EVS.
      • Если everest.io/reclaim-policy установлена в значение retain-volume-only, при удалении PVC PV будет удалён, а диск EVS сохранён.

      Retain: Когда PVC удаляется, как PV, так и базовые ресурсы хранилища сохраняются. Вам необходимо вручную удалить эти ресурсы. После удаления PVC, PV находится в состоянии Released и не может быть привязан к PVC повторно. Если вы хотите продолжить использовать базовые ресурсы хранилища, сначала удалите PV. Затем создайте новый PV и PVC и свяжите их с базовыми ресурсами хранилища.

      storageClassName

      Yes

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

      mountOptions

      No

      Параметры монтирования. Подробнее см. Configuring EVS Mount Options.

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

  3. Создайте PVC.

    1. Создайте файл pvc-evs.yaml.
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
      name: pvc-evs
      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. 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 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 . 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
      Table 3 Ключевые параметры

      Параметр

      Обязательно

      Описание

      failure-domain.beta.kubernetes.io/region

      Да

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

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

      failure-domain.beta.kubernetes.io/zone

      Да

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

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

      storage

      Да

      Запрошенный объём в PVC, в Gi.

      Значение должно совпадать с размером хранилища существующего PV.

      volumeName

      Да

      Имя PV, которое должно совпадать с именем PV в 1.

      storageClassName

      Yes

      Имя StorageClass, которое должно совпадать со StorageClass PV в 1.

      Имя StorageClass для томов EVS — csi-disk.

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

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

    1. Создайте файл с именем web-evs.yaml. В этом примере том EVS монтируется в путь /data.
      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
      name: web-evs
      namespace: default
      spec:
      replicas: 1 # The number of workload replicas that use the EVS volume must be 1.
      selector:
      matchLabels:
      app: web-evs
      serviceName: web-evs # Headless Service name
      template:
      metadata:
      labels:
      app: web-evs
      spec:
      containers:
      - name: container-1
      image: nginx:latest # Replace it with the correct image path for your application.
      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 # Name of the created PVC
      ---
      apiVersion: v1
      kind: Service
      metadata:
      name: web-evs # Headless Service name
      namespace: default
      labels:
      app: web-evs
      spec:
      selector:
      app: web-evs
      clusterIP: None
      ports:
      - name: web-evs
      targetPort: 80
      nodePort: 0
      port: 80
      protocol: TCP
      type: ClusterIP
    2. Выполните следующую команду для создания рабочей нагрузки, к которой монтируется том EVS:
      kubectl apply -f web-evs.yaml

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

Проверка сохранения данных

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

    1. Выполните следующую команду для просмотра созданного pod:
      kubectl get pod | grep web-evs

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

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

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

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

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

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

      lost+found

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

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

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

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

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

    lost+found
    static

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

    kubectl delete pod web-evs-0

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

    pod "web-evs-0" deleted

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

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

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

    lost+found
    static

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

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

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

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

Операция

Описание

Процедура

Создание тома хранения (PV)

Создайте PV в консоли CCE.

  1. Выберите Storage в панели навигации. В правой панели нажмите вкладку PVs. Нажмите Create PV в правом верхнем углу. В выдвижной панели настройте параметры.
    • Volume Type: Выберите EVS.
    • EVS: Нажмите Select EVS. На отображаемой странице выберите EVS volume, который соответствует вашим требованиям, и нажмите OK.
    • PV Name: Введите имя PV, которое должно быть уникальным в кластере.
    • Access Mode: EVS volumes поддерживают только ReadWriteOnce, что означает, что том хранения может быть смонтирован к одному узлу в режиме чтения/записи. Подробнее см. Volume Access Modes.
    • Reclaim Policy: поддерживается Delete или Retain. Подробнее см. PV Reclaim Policy.
  2. Нажмите Create.

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

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

  1. Choose Storage in the navigation pane. In the right pane, click the PVCs tab. Locate the target PVC and choose More > Scale-out in the Operation column.
  2. Введите добавляемую ёмкость и нажмите OK.

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

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

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

Просмотр 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 или PVs вкладку.
  2. Найдите целевой PVC и нажмите Synchronize в столбце Capacity, чтобы сделать ёмкость PVC согласованной с ёмкостью базового хранилища.

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