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


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

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

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

Подготовка к работе

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

Ограничения

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

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

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

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

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

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

Вы можете включить диски ультра в существующем кластере, добавив новый пул узлов в кластер, поддерживающий диски ультра. Настройте новый пул узлов для использования дисков ультра с помощью --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 ГБ, с доступом 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:  azure-managed-disk
        ReadOnly:   false
      default-token-smm2n:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-smm2n
        Optional:    false
    [...]
    Events:
      Type    Reason                 Age   From                               Message
      ----    ------                 ----  ----                               -------
      Normal  Scheduled              2m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-79590246-0
      Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-smm2n"
      Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242"
    [...]
    

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