Облачная платформа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 зашифрован, ключ должен быть доступен.
    • Если в вашей учётной записи включены enterprise projects, вы можете выбирать только EVS Disk в enterprise project, к которому принадлежит кластер, либо в проекте enterprise по умолчанию.
    • EVS Disk, которые были разделены, не поддерживаются.
    • Поддерживаются только EVS Disk формата 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 Disk через Console

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

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

      Параметр

      Описание

      Тип PVC

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

      Имя PVC

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

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

      • Если базовое хранилище доступно, создайте 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Монтирование тома хранилища

      Параметр

      Описание

      PVC

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

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

      Путь монтирования

      Введите путь монтирования, например, /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.

      После создания рабочей нагрузки данные в каталоге монтирования контейнера будут сохраняться постоянно. Проверьте хранилище, обратившись к 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, which must be ReadWriteOnce for EVS disks
      capacity:
      storage: 10Gi # EVS disk capacity, in the unit of GiB. 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
      Table 2 Ключевые параметры

      Параметр

      Обязательно

      Описание

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

      No

      Необязательно.

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

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

      failure-domain.beta.kubernetes.io/region

      Yes

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

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

      failure-domain.beta.kubernetes.io/zone

      Yes

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

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

      fsType

      Yes

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

      volumeHandle

      Yes

      ID тома EVS‑диска.

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

      everest.io/disk-volume-type

      Yes

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

      • SAS: High I/O
      • SSD: Ultra-high I/O
      • ESSD: Extreme SSD

      everest.io/crypt-key-id

      No

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

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

      everest.io/enterprise-project-id

      No

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

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

      To obtain an enterprise project 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 enterprise project in Management Information to access the enterprise project console. Copy the corresponding ID to obtain the ID of the enterprise project to which the EVS disk belongs.

      persistentVolumeReclaimPolicy

      Yes

      Политика возврата поддерживается, если версия кластера 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

      Yes

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

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

      failure-domain.beta.kubernetes.io/zone

      Yes

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

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

      storage

      Yes

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

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

      volumeName

      Yes

      Имя 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
      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‑том, соответствующий вашим требованиям, и нажмите OK.
    • PV Name: Введите имя PV, которое должно быть уникальным в кластере.
    • Access Mode: тома EVS поддерживают только ReadWriteOnce, что означает, что том хранения может быть смонтирован к одному узлу в режиме чтения/записи. Подробнее см. Volume Access Modes.
    • Reclaim Policy: поддерживается Delete или Retain. Подробнее см. PV Reclaim Policy.
  2. Нажмите Create.

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

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

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

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

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

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

Просмотр 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 в консоли CCE, чтобы он соответствовал новому размеру.

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

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