Использование дисков 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
Следующие шаги
- Дополнительные сведения о дисках SSD уровня "Премиум" версии 2 см. в статье "Использование дисков SSD уровня "Премиум" версии 2.
- Дополнительные сведения о рекомендациях по хранению см. в рекомендациях по хранению и резервному копированию в Служба Azure Kubernetes (AKS).
Azure Kubernetes Service