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


Использование дисков SSD уровня "Премиум Azure" версии 2 на Служба Azure Kubernetes

Диски SSD уровня "Премиум" версии 2 предлагают рабочие нагрузки , интенсивные операции ввода-вывода в секунду, согласованную задержку на диске подмиллисекунда, а также высокую пропускную способность и пропускную способность. Производительность (емкость, пропускная способность и количество операций ввода-вывода в секунду) дисков SSD (цен. категории "Премиум") версии 2 можно настроить независимо в любое время, что упрощает выполнение большего количества сценариев с точки зрения экономической эффективности при соблюдении требований к производительности.

В этой статье описывается, как настроить новый или существующий кластер AKS для использования дисков SSD azure premium версии 2.

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

Перед созданием или обновлением кластера AKS, который может использовать диски SSD уровня "Премиум" azure версии 2, необходимо создать кластер AKS в том же регионе и зоне доступности, которая поддерживает хранилище класса Premium и подключить диски, выполнив указанные ниже действия.

Для существующего кластера AKS можно включить диски SSD уровня "Премиум" версии 2, добавив новый пул узлов в кластер, а затем подключите диски, выполнив указанные ниже действия.

Внимание

Для дисков SSD уровня "Премиум" azure версии 2 требуются пулы узлов, развернутые в регионах, поддерживающих эти диски. Список поддерживаемых регионов см. в разделе "Диски SSD уровня "Премиум" версии 2.

Ограничения

  • Диски SSD azure уровня "Премиум" версии 2 имеют определенные ограничения, которые необходимо учитывать. Полный список см. в разделе об ограничениях SSD уровня "Премиум" версии 2.

Динамические использование дисков SSD уровня "Премиум" версии 2 с классом хранилища

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

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

Класс хранения используется для определения того, как единица хранения создается динамически с помощью постоянного тома. Дополнительные сведения о классах хранения Kubernetes см. в разделе Kubernetes Storage Classes (Классы хранения Kubernetes).

В этом примере создается класс хранилища, ссылающийся на диски SSD уровня "Премиум" версии 2. Создайте файл azure-pv2-disk-sc.yaml и скопируйте в него следующий манифест.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: premium2-disk-sc
parameters:
   cachingMode: None
   skuName: PremiumV2_LRS
   DiskIOPSReadWrite: "4000"
   DiskMBpsReadWrite: "1000"
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

Создайте класс хранилища с помощью команды kubectl apply и укажите файл azure-pv2-disk-sc.yaml :

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

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

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

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

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

Создайте файл azure-pv2-disk-pvc.yaml и скопируйте в него следующий манифест. Утверждение запрашивает диск с именем premium2-disk, имеющий размер 1000 ГБ, с доступом ReadWriteOnce. Класс хранилища premium2-disk-sc указывается в качестве класса хранилища.

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

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

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

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

persistentvolumeclaim/premium2-disk created

Использование постоянного тома

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

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

kind: Pod
apiVersion: v1
metadata:
  name: nginx-premium2
spec:
  containers:
  - name: nginx-premium2
    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: premium2-disk

Создайте модуль pod с помощью команды kubectl apply, как показано ниже.

kubectl apply -f nginx-premium2.yaml

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

pod/nginx-premium2 created

Теперь у вас есть работающий pod с диском Azure, подключенным к каталогу /mnt/azure. Эту конфигурацию можно видеть при проверке модуля с помощью kubectl describe pod nginx-premium2, как показано в сокращенном примере ниже.

kubectl describe pod nginx-premium2

[...]
Volumes:
  volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  premium2-disk
    ReadOnly:   false
  kube-api-access-sh59b:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason                  Age    From                     Message
  ----    ------                  ----   ----                     -------
  Normal  Scheduled               7m58s  default-scheduler        Successfully assigned default/nginx-premium2 to aks-agentpool-12254644-vmss000006
  Normal  SuccessfulAttachVolume  7m46s  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-ff39fb64-1189-4c52-9a24-e065b855b886"
  Normal  Pulling                 7m39s  kubelet                  Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine"
  Normal  Pulled                  7m38s  kubelet                  Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" in 1.192915667s
  Normal  Created                 7m38s  kubelet                  Created container nginx-premium2
  Normal  Started                 7m38s  kubelet                  Started container nginx-premium2
[...]

Настройка ограничений операций ввода-вывода в секунду и пропускной способности

Операции ввода-вывода в секунду (IOPS) и ограничения пропускной способности для диска SSD Azure premium версии 2 в настоящее время не поддерживаются с помощью AKS. Чтобы настроить производительность, можно использовать команду Azure CLI az disk update и включая --disk-iops-read-write параметры.--disk-mbps-read-write

В следующем примере выполняется обновление операций ввода-вывода в секунду на 5000 и Мбит/с до 200. Для --resource-groupэтого значение должно быть второй группой ресурсов, созданной автоматически для хранения рабочих узлов AKS с помощью соглашения об именовании MC_resourcegroupname_clustername_location. Дополнительные сведения см. в статье "Почему создаются две группы ресурсов с помощью AKS?".

Значение параметра --name — это имя тома, созданного с помощью StorageClass, и начинается с pvc-. Чтобы определить имя диска, можно запустить kubectl get pvc или перейти к вторичной группе ресурсов на портале, чтобы найти ее. Дополнительные сведения см. в статье об управлении ресурсами из портал Azure.

az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200  

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