Partager via


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