Поделиться через


Использование дисков Azure ценовой категории "Ультра" в Службе Azure Kubernetes

Диски Azure Ultra предоставляют дисковое хранилище с высокой пропускной способностью, большим количеством операций ввода-вывода в секунду и стабильной низкой задержкой для ваших приложений с сохранением состояния. Основным преимуществом дисков ценовой категории "Ультра" является возможность динамического изменения производительности SSD, а также рабочих нагрузок без необходимости перезагрузки узлов агентов. Диски ценовой категории "Ультра" подходят для рабочих нагрузок, интенсивно использующих данные.

В этой статье описывается, как настроить новый или существующий кластер AKS для использования дисков Azure ценовой категории "Ультра".

Прежде чем начать

Эту функцию можно задать только при создании кластера или при создании пула узлов.

Ограничения

  • Для дисков Azure ценовой категории "Ультра" требуются пулы узлов, развернутые в зонах доступности и регионах, поддерживающих эти диски, и поддерживаются только определенными сериями виртуальных машин. Дополнительные сведения см. в соответствующей таблице в разделе ограничений диска "Ультра".
  • Диски "Ультра" нельзя использовать с некоторыми функциями, такими как группы доступности или Шифрование дисков Azure. Ознакомьтесь с ограничениями диска "Ультра" для получения последних сведений.

Создание кластера, который может использовать диски ценовой категории "Ультра"

Создайте группу ресурсов для кластера.

az group create --name MyResourceGroup --location westus2

Создайте кластер AKS, который может использовать диски Azure ценовой категории "Ультра" со следующими командами CLI. Используйте параметр --enable-ultra-ssd для настройки функции EnableUltraSSD.

az aks create \
  --resource-group MyResourceGroup \
  --name myAKSCluster \
  --location westus2 \
  --node-vm-size Standard_D2s_v3 \
  --zones 1 \
  --node-count 2 \
  --enable-ultra-ssd \
  --generate-ssh-keys

Если вы хотите создать кластер без поддержки дисков ценовой категории "Ультра", это можно сделать, опустив --enable-ultra-ssd параметр.

После успешного развертывания кластера выполните следующую команду, которая задает контекст для нового кластера.

az aks get-credentials --resource-group MyResourceGroup --name myAKSCluster

Включение дисков ценовой категории "Ультра" в существующем кластере

Вы можете включить диски ультра в существующем кластере, добавив новый пул узлов в кластер, поддерживающий диски ультра. Настройте новый пул узлов для использования ультра-дисков с параметром --enable-ultra-ssd и командой az aks nodepool add.

Если вы хотите создать пулы узлов без поддержки дисков ценовой категории "Ультра", это можно сделать, исключив --enable-ultra-ssd параметр.

Динамическое использование дисков ценовой категории "Ультра" с классом хранения

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

Создание класса хранения

Класс хранения используется для определения того, как единица хранения создается динамически с помощью постоянного тома. Дополнительные сведения о классах хранения Kubernetes см. в разделе Классы хранения Kubernetes. В этом примере создается класс хранилища, ссылающийся на диски ценовой категории "Ультра".

  1. Создайте файл с именем azure-ultra-disk-sc.yaml и скопируйте его в следующем манифесте:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: ultra-disk-sc
    provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21
    volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created
    parameters:
      skuname: UltraSSD_LRS
      kind: managed
      cachingMode: None
      diskIopsReadWrite: "2000"  # minimum value: 2 IOPS/GiB
      diskMbpsReadWrite: "320"   # minimum value: 0.032/GiB
    
  2. Создайте класс хранилища с помощью kubectl apply команды и укажите azure-ultra-disk-sc.yaml файл.

    kubectl apply -f azure-ultra-disk-sc.yaml
    

    Выходные данные должны выглядеть примерно так:

    storageclass.storage.k8s.io/ultra-disk-sc created
    

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

Запрос на постоянный том (PVC) используется для автоматического выделения хранилища на основе класса хранения. В этом случае PVC может использовать ранее созданный класс хранения для создания ультра-диска.

  1. Создайте файл с именем azure-ultra-disk-pvc.yaml и скопируйте его в следующем манифесте:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ultra-disk
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: ultra-disk-sc
      resources:
        requests:
          storage: 1000Gi
    

    Запрос на диск с именем ultra-disk, размером 1000 GB и доступом ReadWriteOnce. Класс ultra-disk-sc хранилища указывается в качестве класса хранилища.

  2. Создайте запрос на выделение постоянного тома с помощью команды kubectl apply и укажите файл azure-ultra-disk-pvc.yaml.

    kubectl apply -f azure-ultra-disk-pvc.yaml
    

    Выходные данные должны выглядеть примерно так:

    persistentvolumeclaim/ultra-disk created
    

Используйте постоянный том

После создания заявления на постоянный том и успешного выделения диска может быть создан модуль с доступом к pod диску. Следующий манифест создаёт базовый pod NGINX, который использует запрос на выделение постоянного тома с именем ultra-disk для монтирования диска Azure в путь /mnt/azure.

  1. Создайте файл с именем nginx-ultra.yaml и скопируйте его в следующем манифесте:

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-ultra
    spec:
      containers:
      - name: nginx-ultra
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/azure"
          name: volume
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: ultra-disk
    
  2. Создайте pod с помощью команды kubectl apply и укажите файл nginx-ultra.yaml.

    kubectl apply -f nginx-ultra.yaml
    

    Выходные данные должны выглядеть примерно так:

    pod/nginx-ultra created
    

    Теперь у вас есть работающий pod с диском Azure, подключенным к каталогу /mnt/azure.

  3. Просмотрите сведения о конфигурации с помощью команды kubectl describe pod и укажите файл nginx-ultra.yaml.

    kubectl describe pod nginx-ultra
    

    Выходные данные должны выглядеть примерно так:

    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  ultra-disk
        ReadOnly:   false
      kube-api-access-sszt8:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
    [...]
    Events:
      Type    Reason                  Age   From                     Message
      ----    ------                  ----  ----                     -------
      Normal  Scheduled               29s   default-scheduler        Successfully assigned default/nginx-ultra to aks-nodepool1-13380798-vmss000001
      Normal  SuccessfulAttachVolume  9s    attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-a6a6a6a6-bbbb-cccc-dddd-e7e7e7e7e7e7"
    

Следующие шаги