Utiliser des disques Azure SSD Premium v2 sur Azure Kubernetes Service
Les disques Azure SSD Premium v2 offrent des charges de travail d’entreprise intenses en E/S, une latence de disque d’une taille inférieure à la milliseconde, ainsi qu’un débit et des IOPS élevés. Les performances (capacité, débit et IOPS) des disques SSD Premium v2 peuvent être configurées indépendamment à tout moment, ce qui permet à un plus grand nombre de scénarios d'être rentables tout en répondant aux besoins de performances.
Cet article explique comment configurer un cluster AKS nouveau ou existant pour l’utilisation de disques Azure SSD Premium v2.
Avant de commencer
Avant de créer ou de mettre à niveau un cluster AKS capable d’utiliser des disques Azure SSD Premium v2, vous devez créer un cluster AKS dans la même région et la même zone de disponibilité qui prend en charge Stockage Premium, puis attacher les disques en suivant les étapes ci-dessous.
Pour un cluster AKS existant, vous pouvez activer les disques SSD Premium v2 en ajoutant un nouveau pool de nœuds à votre cluster, puis attacher les disques en suivant les étapes ci-dessous.
Important
Les disques Azure SSD Premium v2 nécessitent des pools de nœuds déployés dans les régions qui prennent en charge ces disques. Pour obtenir la liste des régions prises en charge, veuillez consulter la rubrique Régions prises en charge par les disques SSD Premium v2.
Limites
- Les disques Azure SSD Premium v2 présentent certaines limitations que vous devez connaître. Pour obtenir une liste complète, consultez Limitations de SSD Premium v2.
Utiliser des disques SSD Premium v2 de manière dynamique avec une classe de stockage
Pour utiliser des disques SSD Premium v2 dans un déploiement ou dans un StatefulSet, vous pouvez utiliser une classe de stockage pour l’approvisionnement dynamique.
Créer la classe de stockage
Une classe de stockage permet de définir la création dynamique d’une unité de stockage avec un volume persistant. Pour plus d’informations sur les classes de stockage Kubernetes, consultez Classes de stockage Kubernetes.
Dans cet exemple, vous devez créer une classe de stockage qui fait référence à des disques SSD Premium v2. Créez un fichier nommé azure-pv2-disk-sc.yaml
et copiez-y le manifeste suivant.
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
Créez la classe de stockage avec la commande kubectl apply, puis spécifiez votre fichier azure-pv2-disk-sc.yaml :
kubectl apply -f azure-pv2-disk-sc.yaml
La sortie de la commande ressemble à l’exemple suivant :
storageclass.storage.k8s.io/premium2-disk-sc created
Créer une revendication de volume persistant
Une revendication de volume persistant (PVC) est utilisée pour configurer automatiquement le stockage basé sur une classe de stockage. Dans ce cas, un PVC peut utiliser la classe de stockage créée précédemment pour créer un disque ultra.
Créez un fichier nommé azure-pv2-disk-pvc.yaml
et copiez-y le manifeste suivant. La revendication demande un disque nommé premium2-disk
, d’une taille de 1 000 Go avec un accès ReadWriteOnce. La classe de stockage premium2-disk-sc est spécifiée en tant que classe de stockage.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: premium2-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: premium2-disk-sc
resources:
requests:
storage: 1000Gi
Créez la revendication de volume persistant avec la commande kubectl apply, puis spécifiez votre fichier azure-pv2-disk-pvc.yaml :
kubectl apply -f azure-pv2-disk-pvc.yaml
La sortie de la commande ressemble à l’exemple suivant :
persistentvolumeclaim/premium2-disk created
Utiliser le volume persistant
Une fois la revendication de volume persistant créée, et le disque provisionné convenablement, un pod peut être créé avec un accès au disque. Le manifeste suivant crée un pod NGINX de base qui utilise la revendication de volume persistant nommée premium2-disk pour monter le disque Azure au niveau du chemin d’accès /mnt/azure
.
Créez un fichier nommé nginx-premium2.yaml
et copiez-y le manifeste suivant.
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
Créez le pod avec la commande kubectl apply, comme indiqué dans l’exemple suivant :
kubectl apply -f nginx-premium2.yaml
La sortie de la commande ressemble à l’exemple suivant :
pod/nginx-premium2 created
Vous disposez maintenant d’un pod en cours d’exécution avec le disque Azure monté dans le répertoire /mnt/azure
. Cette configuration peut être consultée en inspectant votre pod via kubectl describe pod nginx-premium2
, comme illustré dans l’exemple condensé suivant :
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
[...]
Définir les limites d’IOPS et de débit
Les limites d’opérations d’entrée/sortie par seconde (IOPS) et de débit pour le disque SSD Azure Premium v2 ne sont actuellement pas prises en charge via AKS. Pour régler le niveau de performance, vous pouvez utiliser la commande Azure CLI az disk update, puis inclure les paramètres --disk-iops-read-write
et --disk-mbps-read-write
.
L’exemple suivant met à jour les IOPS de disque en lecture/écriture à 5 000 Mbits/s et à 200 Mbits/s. Pour --resource-group
, la valeur doit être le deuxième groupe de ressources créé automatiquement pour stocker les nœuds Worker AKS avec la convention d’affectation de noms MC_resourcegroupname_clustername_location. Pour plus d’informations, consultez Pourquoi deux groupes de ressources sont-ils créés avec AKS ?.
La valeur du paramètre --name
est le nom du volume créé à l’aide de la classe de stockage StorageClass et commence par pvc-
. Pour identifier le nom du disque, vous pouvez exécuter kubectl get pvc
ou accéder au groupe de ressources secondaire dans le portail pour le trouver. Si vous souhaitez en savoir plus, veuillez consulter la rubrique Gérer les ressources depuis le Portail Azure.
az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200
Étapes suivantes
- Si vous souhaitez en savoir plus sur les disques SSD Premium v2, veuillez consulter la rubrique Utilisation des disques Azure SSD Premium v2.
- Si vous souhaitez en savoir plus sur les meilleures pratiques relatives au stockage, veuillez consulter la rubrique Meilleures pratiques relatives au stockage et aux sauvegardes dans Azure Kubernetes Service (AKS).
Azure Kubernetes Service