Использование предварительной версии контейнера Azure служба хранилища с временным диском

Контейнер Azure служба хранилища — это облачная служба управления томами, развертывания и оркестрации, созданная в собственном коде для контейнеров. В этой статье показано, как настроить контейнер Azure служба хранилища использовать временный диск в качестве внутреннего хранилища для рабочих нагрузок Kubernetes. В конце концов у вас будет модуль pod, использующий локальный NVMe или temp SSD в качестве хранилища.

Внимание

Локальные диски являются временными, что означает, что они создаются в локальном хранилище виртуальной машины и не сохраняются в службе хранилища Azure. Данные будут потеряны на этих дисках при остановке или освобождении виртуальной машины. Вы можете создавать только универсальные временные тома Kubernetes из пула носителей эфемерных дисков. Если вы хотите создать постоянный том, необходимо включить реплика tion для пула носителей.

Необходимые компоненты

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

  • Для этой статьи требуется последняя версия (2.35.0 или более поздняя) Azure CLI. Узнайте , как установить Azure CLI. Если вы используете среду Bash в Azure Cloud Shell, то последняя версия уже установлена. Если вы планируете выполнять команды локально, а не в Azure Cloud Shell, обязательно запустите их с правами администратора. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".

  • Вам потребуется клиент командной строки Kubernetes. kubectl Он уже установлен, если вы используете Azure Cloud Shell или вы можете установить его локально, выполнив az aks install-cli команду.

Примечание.

Чтобы использовать контейнер Azure служба хранилища с временным диском, кластер AKS должен иметь пул узлов не менее трех оптимизированных для хранения виртуальных машин, таких как standard_l8s_v3. Рекомендуется использовать для каждой виртуальной машины не менее четырех виртуальных ЦП (виртуальных ЦП).

Доступность в регионах

Контейнер Azure служба хранилища доступен только для подмножества регионов Azure:

  • Северная часть ЮАР (Африка)
  • "Восточная Австралия" (Азиатско-Тихоокеанский регион);
  • (Азиатско-Тихоокеанский регион) Восточная Азия
  • (Азиатско-Тихоокеанский регион) Восточная Япония
  • (Азиатско-Тихоокеанский регион) Республика Корея, центральный регион
  • Юго-Восточная Азия (Азиатско-Тихоокеанский регион)
  • "Центральная Индия" (Азиатско-Тихоокеанский регион);
  • (Европа) Центральная Франция
  • Центрально-Западная Германия (Европа)
  • "Северная Европа" (Европа);
  • "Западная Европа" (Европа).
  • (Европа) Южная часть Соединенного Королевства
  • (Европа) Центральная Швеция;
  • Северная Швейцария (Европа)
  • Северная часть ОАЭ (Ближний Восток)
  • (Северная Америка) Восточная часть США;
  • (Северная Америка) Восточная часть США 2;
  • (Северная Америка) Западная часть США
  • (Северная Америка) Западная часть США 2;
  • (Северная Америка) Западная часть США 3;
  • (Северная Америка) Центральная часть США;
  • (Северная Америка) Северная часть США
  • (Северная Америка) Центрально-южная часть США;
  • (Северная Америка) Западная часть США
  • (Северная Америка) Центральная Канада;
  • (Северная Америка) Восточная Канада
  • Южная Бразилия (Южная Америка)

Создание пула носителей

Сначала создайте пул носителей, который является логическим группированием хранилища для кластера Kubernetes, определив его в файле манифеста YAML.

Если вы включили служба хранилища контейнера Azure или az aks createaz aks update команды, возможно, у вас уже есть пул носителей. Используется kubectl get sp -n acstor для получения списка пулов носителей. Если у вас уже есть пул носителей, который вы хотите использовать, можно пропустить этот раздел и перейти к отображению доступных классов хранилища.

Существует три варианта создания пула носителей, использующего временный диск:

Создание пула носителей с помощью NVMe

Выполните следующие действия, чтобы создать пул носителей с помощью локального NVMe.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-storagepool.yamlнапример.

  2. Вставьте следующий код и сохраните файл. Значение имени пула носителей может быть любым нужным.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: ephemeraldisk
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk: {}
    
  3. Примените файл манифеста YAML для создания пула носителей.

    kubectl apply -f acstor-storagepool.yaml 
    

    После завершения создания пула носителей вы увидите следующее сообщение:

    storagepool.containerstorage.azure.com/ephemeraldisk created
    

    Вы также можете выполнить эту команду, чтобы проверка состояние пула носителей. Замените <storage-pool-name> значением имени пула носителей. В этом примере значение будет эфемерным.

    kubectl describe sp <storage-pool-name> -n acstor
    

При создании пула носителей контейнер Azure служба хранилища создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>об именовании.

Создание пула носителей с временным SSD

Выполните следующие действия, чтобы создать пул носителей с помощью temp SSD.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-storagepool.yamlнапример.

  2. Вставьте следующий код и сохраните файл. Значение имени пула носителей может быть любым нужным.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: ephemeraldisk
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk:
          diskType: temp
    
  3. Примените файл манифеста YAML для создания пула носителей.

    kubectl apply -f acstor-storagepool.yaml 
    

    После завершения создания пула носителей вы увидите следующее сообщение:

    storagepool.containerstorage.azure.com/ephemeraldisk created
    

    Вы также можете выполнить эту команду, чтобы проверка состояние пула носителей. Замените <storage-pool-name> значением имени пула носителей. В этом примере значение будет эфемерным.

    kubectl describe sp <storage-pool-name> -n acstor
    

При создании пула носителей контейнер Azure служба хранилища создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>об именовании.

Отображение доступных классов хранилища

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

Запустите kubectl get sc , чтобы отобразить доступные классы хранилища. Вы увидите класс хранилища с именем acstor-<storage-pool-name>.

Внимание

Не используйте класс хранилища, помеченный внутренним. Это внутренний класс хранилища, необходимый для работы служба хранилища контейнера Azure.

Развертывание модуля pod с универсальным временным томом

Создайте модуль pod с помощью Fio (гибкий модуль ввода-вывода Tester) для тестирования и моделирования рабочих нагрузок, использующего универсальный временный том.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-pod.yamlнапример.

  2. Вставьте следующий код и сохраните файл.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: "acstor-ephemeraldisk-nvme" # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    
  3. Примените файл манифеста YAML для развертывания модуля pod.

    kubectl apply -f acstor-pod.yaml
    

    Вы должны увидеть результат, аналогичный приведенному ниже:

    pod/fiopod created
    
  4. Убедитесь, что модуль pod запущен и что утверждение эфемерного тома успешно привязано к pod:

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    
  5. Проверьте тестирование fio, чтобы просмотреть текущее состояние:

    kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

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

Развертывание пула носителей

Вы можете расширить пулы носителей, поддерживаемые локальным NVMe или temp SSD, чтобы быстро масштабироваться и без простоя. Сжатие пулов носителей в настоящее время не поддерживается.

Так как пул носителей, поддерживаемый временным диском, использует локальные ресурсы хранилища на узлах кластера AKS (виртуальных машинах), расширение пула носителей требует добавления другого узла в кластер. Следуйте этим инструкциям, чтобы развернуть пул носителей.

  1. Выполните следующую команду, чтобы добавить узел в кластер AKS. Замените <cluster-name>, <nodepool name> и <resource-group-name> собственными значениями. Чтобы получить имя пула узлов, выполните команду kubectl get nodes.

    az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
    
  2. Запустите kubectl get nodes и увидите, что узел был добавлен в кластер.

  3. Запустите kubectl get sp -A и убедитесь, что емкость пула носителей увеличилась.

Удаление пула носителей

Если вы хотите удалить пул носителей, выполните следующую команду. Замените <storage-pool-name> именем пула носителей.

kubectl delete sp -n acstor <storage-pool-name>

Необязательно. Создание пула носителей с помощью тома реплика tion (только NVMe)

Приложения, использующие локальные NVMe, могут использовать реплика хранения для повышения устойчивости. Репликация в настоящее время не поддерживается для temp SSD.

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

Выполните следующие действия, чтобы создать пул носителей с помощью локального NVMe с реплика tion.

Примечание.

Так как пулы носителей временных дисков потребляют все доступные диски NVMe, необходимо удалить все существующие локальные пулы носителей NVMe, прежде чем создавать новый пул носителей с реплика.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-storagepool.yamlнапример.

  2. Вставьте следующий код и сохраните файл. Значение имени пула носителей может быть любым нужным. Задайте для реплика значение 3 или 5.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: nvme
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk:
          diskType: nvme
          replicas: 3
    
  3. Примените файл манифеста YAML для создания пула носителей.

    kubectl apply -f acstor-storagepool.yaml 
    

    После завершения создания пула носителей вы увидите следующее сообщение:

    storagepool.containerstorage.azure.com/nvme created
    

    Вы также можете выполнить эту команду, чтобы проверка состояние пула носителей. Замените <storage-pool-name> значением имени пула носителей. В этом примере значение будет nvme.

    kubectl describe sp <storage-pool-name> -n acstor
    

При создании пула носителей контейнер Azure служба хранилища создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>об именовании. Теперь можно отобразить доступные классы хранилища и создать утверждение постоянного тома.

Создание заявки на доступ к постоянному тому

Утверждение постоянного тома (PVC) используется для автоматической подготовки хранилища на основе класса хранения. Выполните следующие действия, чтобы создать ПВХ с помощью нового класса хранения.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-pvc.yamlнапример.

  2. Вставьте следующий код и сохраните файл. Значение ПВХ name может быть любым, что вы хотите.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ephemeralpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. Примените файл манифеста YAML для создания ПВХ.

    kubectl apply -f acstor-pvc.yaml
    

    Должен отобразиться примерно такой результат:

    persistentvolumeclaim/ephemeralpvc created
    

    Вы можете проверить состояние ПВХ, выполнив следующую команду:

    kubectl describe pvc ephemeralpvc
    

После создания ПВХ он готов к использованию pod.

Развертывание модуля pod и подключение постоянного тома

Создайте модуль pod с помощью Fio (гибкий средство тестирования ввода-вывода) для тестирования и моделирования рабочих нагрузок и укажите путь подключения для постоянного тома. Для имени утверждения используйте значение имени , используемое при создании утверждения постоянного тома.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-pod.yamlнапример.

  2. Вставьте следующий код и сохраните файл.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: ephemeralpv
          persistentVolumeClaim:
            claimName: ephemeralpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralpv
    
  3. Примените файл манифеста YAML для развертывания модуля pod.

    kubectl apply -f acstor-pod.yaml
    

    Вы должны увидеть результат, аналогичный приведенному ниже:

    pod/fiopod created
    
  4. Убедитесь, что модуль pod запущен и что утверждение постоянного тома успешно привязано к pod:

    kubectl describe pod fiopod
    kubectl describe pvc ephemeralpvc
    
  5. Проверьте тестирование fio, чтобы просмотреть текущее состояние:

    kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

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

Отключение и повторное подключение постоянного тома

Чтобы отключить постоянный том, удалите модуль pod, к которому подключен постоянный том. Замените <pod-name> именем pod, например fiopod.

kubectl delete pods <pod-name>

Чтобы повторно подключить постоянный том, просто укажите имя утверждения постоянного тома в файле манифеста YAML, как описано в разделе "Развертывание модуля pod" и подключение постоянного тома.

Чтобы проверка, к которому привязан постоянный том, к которому привязано утверждение постоянного тома, выполните командуkubectl get pvc <persistent-volume-claim-name>.

См. также