Utiliser des disques Azure Ultra sur Azure Kubernetes Service
Les disques Ultra Azure permettent un stockage de disque à haut débit avec un nombre élevé d’IOPS et une faible latence homogène pour vos applications avec état. Entre autres avantages, les disques Ultra permettent de changer dynamiquement les performances des disques SSD en fonction de vos charges de travail, sans devoir redémarrer vos nœuds d’agent. Les disques Ultra sont adaptés aux charges de travail à forte intensité de données.
Cet article explique comment configurer un cluster AKS (nouveau ou existant) pour l’utilisation de disques Ultra Azure.
Avant de commencer
Cette fonctionnalité ne peut être définie qu’au moment de la création du cluster ou à la création d’un pool de nœuds.
Limites
- Les disques Ultra Azure requièrent des pools de nœuds déployés dans des zones de disponibilité et des régions qui prennent en charge ces disques, tout en n’étant uniquement pris en charge que par des séries de machines virtuelles spécifiques. Pour plus d’informations, consultez le tableau correspondant sous la section Limitations des disques Ultra.
- Les disques Ultra ne peuvent pas être utilisés avec certaines fonctionnalités, telles que les groupes à haute disponibilité ou Azure Disk Encryption. Examinez les limitations des disques Ultra pour obtenir les informations les plus récentes.
Créer un cluster qui peut utiliser des disques Ultra
Créez un cluster AKS capable d’exploiter des disques Azure Ultra à l’aide des commandes CLI suivantes. Utilisez le paramètre --enable-ultra-ssd
pour définir la fonctionnalité 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
Si vous souhaitez créer un cluster sans prise en charge des disques Ultra, omettez le paramètre --enable-ultra-ssd
.
Activer les disques Ultra sur un cluster existant
Vous pouvez activer les disques Ultra sur un cluster existant en ajoutant un nouveau pool de nœuds à votre cluster qui prend en charge les disques Ultra. Configurez un nouveau pool de nœuds pour utiliser des disques Ultra à l’aide du paramètre --enable-ultra-ssd
avec la commande az aks nodepool add
.
Si vous souhaitez créer de nouveaux pools de nœuds sans prise en charge des disques Ultra, exécutez le paramètre --enable-ultra-ssd
.
Utiliser des disques Ultra de manière dynamique avec une classe de stockage
Pour utiliser des disques Ultra dans nos déploiements ou StatefulSets, 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, nous créons une classe de stockage qui fait référence à des disques Ultra.
Créez un fichier nommé
azure-ultra-disk-sc.yaml
et copiez-y le manifeste suivant :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
Créez la classe de stockage à l’aide de la commande
kubectl apply
et spécifiez votre fichierazure-ultra-disk-sc.yaml
.kubectl apply -f azure-ultra-disk-sc.yaml
Votre sortie doit ressembler à l’exemple suivant :
storageclass.storage.k8s.io/ultra-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-ultra-disk-pvc.yaml
et copiez-y le manifeste suivant :apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ultra-disk spec: accessModes: - ReadWriteOnce storageClassName: ultra-disk-sc resources: requests: storage: 1000Gi
La revendication demande un disque nommé
ultra-disk
, d’une taille de 1 000 Go avec un accès ReadWriteOnce. La classe de stockage ultra-disk-sc est spécifiée en tant que classe de stockage.Créez la revendication de volume persistant avec la commande
kubectl apply
et spécifiez votre fichierazure-ultra-disk-pvc.yaml
.kubectl apply -f azure-ultra-disk-pvc.yaml
Votre sortie doit ressembler à l’exemple suivant :
persistentvolumeclaim/ultra-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é ultra-disk pour monter le disque Azure à l’emplacement /mnt/azure
.
Créez un fichier nommé
nginx-ultra.yaml
et copiez-y le manifeste suivant :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
Créez le pod à l’aide de la commande
kubectl apply
et spécifiez votre fichiernginx-ultra.yaml
.kubectl apply -f nginx-ultra.yaml
Votre sortie doit ressembler à l’exemple suivant :
pod/nginx-ultra created
Vous disposez maintenant d’un pod en cours d’exécution avec le disque Azure monté dans le répertoire
/mnt/azure
.Consultez les détails de votre configuration à l’aide de la commande
kubectl describe pod
et spécifiez votre fichiernginx-ultra.yaml
.kubectl describe pod nginx-ultra
Votre sortie doit ressembler à l’exemple suivant :
[...] 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" [...]
Étapes suivantes
- Pour plus d’informations sur les disques Ultra, consultez Utilisation de disques Ultra Azure.
- Pour plus d’informations sur les meilleures pratiques en matière de stockage, consultez Meilleures pratiques relatives au stockage et aux sauvegardes dans AKS.
Azure Kubernetes Service