Configurer l’autoscaler de cluster AKS

Après avoir évoqué ici le scaling des pods, nous allons parler du scaling des nodes ! AKS nous offre la possibilité d’allouer et de désallouer automatiquement des nodes Kubernetes pour l’hébergement de nos applications en fonction de critères que nous détaillerons ci-dessous., c’est grâce à l’autoscaler de cluster.

Kubernetes - Configurer l'autoscaler de cluster AKS

Création du cluster

Demandons un cluster de test :

az group create --name aks --location eastus

az aks create --resource-group aks --name myAKS --node-count 1 --generate-ssh-keys

Autoscale manuel

AKS fonctionne avec un système de pool. Un pool est un regroupement de nœuds dans mon cluster, un nœud étant une machine virtuelle Azure.

Pour scaler manuellement mes nodes il faut cibler un pool :

az aks scale --resource-group aks --name myAKS --node-count 3 --nodepool-name #NodePoolName#

Pour obtenir un descriptif du/des pool(s), utilisez cette commande. On y voit le nom du pool à utiliser dans la commande ci-dessus.

az aks show --resource-group aks --name myAKS --query agentPoolProfiles

ou

az aks nodepool list --resource-group aks --cluster-name myAKS

1 - Configurer l'autoscaler de cluster AKS

Si vous n’avez qu’un seul pool vous pouvez simplifier la commande :

az aks scale --resource-group aks--name myAKS --node-count 3

Il y a maintenant 3 nœuds, donc 3 VM pouvant héberger des pods, dans notre cluster.

2 - Configurer l'autoscaler de cluster AKS

Autoscale automatique

Nous avions parlé ici des “ressources” avec la définition des propriétés requests et limits.

Requests, c’est ce que le pod est garanti d’avoir à sa disposition pour fonctionner. Ici mon container aura 100m de CPU et 15Mi de RAM.

11 - Configurer l'autoscaler de cluster AKS

L’autoscaler AKS augmente ou diminue automatiquement la taille du pool de nœuds, en analysant la demande de ressources des pods.

  • Si les pods ne peuvent pas être démarrés, car il n’y a pas assez de puissance cpu/ram sur les nœuds du pool, l’autoscaler de cluster en ajoute, jusqu’à atteindre la taille maximale du pool de nœuds.
  • Si les nœuds sont sous-utilisés et que tous les pods peuvent être déployés en utilisant moins de noeuds, l’autoscaler de cluster supprime des nœuds, jusqu’à atteindre la taille minimale du pool.

Creation

Pour la mise en oeuvre je dois provisionner un AKS avec le support de l’autoscale sur les nodes, il faut alors spécifier une taille minimale et maximale pour le pool de nœuds.

az aks create --resource-group aks --name myAKSWithAutoscale --node-count 1 --vm-set-type VirtualMachineScaleSets --enable-cluster-autoscaler --min-count 1 --max-count 3

4 1024x312 - Configurer l'autoscaler de cluster AKS

On a maintenant un cluster avec une VM dans le node pool déclaré, scalable entre 1 et 3.

On peux faire évoluer la configuration à l’aide de –update-cluster-autoscaler :

az aks update --resource-group aks --name myAKSWithAutoscale --update-cluster-autoscaler --min-count 1 --max-count 5

6 1024x401 - Configurer l'autoscaler de cluster AKS

Pour supprimer l’autoscale :

az aks update --resource-group aks --name myAKSWithAutoscale --disable-cluster-autoscaler

7 1024x497 - Configurer l'autoscaler de cluster AKS

En revanche, si notre cluster existe mais que l’autoscale n’a pas été configuré à la création il faut l’activer via une commande sur le pool. Par exemple ici sur le premier cluster AKS créé dans cet article :

az aks nodepool update --resource-group aks --cluster-name myAKS --name nodepool1 --enable-cluster-autoscaler --min-count 1 --max-count 5

3 1024x333 - Configurer l'autoscaler de cluster AKS

Nous avions précédemment demandé 3 nodes mais suite à notre configuration de l’autoscale, le nombre de nœud redescend progressivement à 1 puisqu’il n’y a pas de charge sur mes nœuds !

5 1024x347 - Configurer l'autoscaler de cluster AKS

Cet autoscale utilise les VMSS, cette fonctionnalité Azure nous permet de gérer des collections de machines virtuelles (identiques), capable de s’instancier à la demande.

vmss 01 - Configurer l'autoscaler de cluster AKS

Nous avons donc vu ici un second niveau d’autoscaling, nous permettant de provisionner des nodes dynamiquement, afin de s’adapter à la demande en ressources des pods.

A bientôt !

Thomas

2 réponses sur “Configurer l’autoscaler de cluster AKS”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.