Les pools de nœuds dans AKS

Aujourd’hui nous allons nous intéresser aux nodes de notre cluster et l’organisation autour de pool de noeuds dans AKS. Tout l’intérêt des nodepools est la possibilité d’avoir des nœuds spécifiques pour exécuter nos pods afin de répondre à des besoins bien précis.

aks - Les pools de nœuds dans AKS

Qu’est ce qu’un pool de noeuds

Dans Azure Kubernetes Service, les nœuds sont regroupés dans des pools de nœuds. Ces pools contiennent 1 ou n VM identiques pour exécuter nos pods. 

Quelques précisions :

  • La création du cluster crée un pool de nœuds par défaut, qu’il n’est pas possible de supprimer.
  • Le cluster AKS peut avoir un maximum de huit pools de nœuds et 800 nœuds dans ces 8 pools de nœuds.

Gérer des pools dans AKS

Il faut utiliser le jeu de commandes az aks nodepool pour exécuter des opérations sur un pool de nœuds.

Création du cluster

az aks create --resource-group rgAks --name myAKSCluster --vm-set-type VirtualMachineScaleSets --node-count 2 --generate-ssh-keys --load-balancer-sku standard

1 1 1024x527 - Les pools de nœuds dans AKS

Important : Le cluster AKS doit utiliser le loadbalancer en SKU Standard pour utiliser plusieurs pools de nœuds.

Ajout

az aks nodepool add --resource-group rgAks --cluster-name myAKSCluster --name nodepool2 --node-count 1 --node-vm-size Standard_D4s_v3 --no-wait

2 1 1024x934 - Les pools de nœuds dans AKS

Modification

Par exemple pour une montée de version de kubernetes :

az aks nodepool upgrade --resource-group rgAks --cluster-name myAKSCluster --name mynodepool --kubernetes-version 1.14.8 --no-wait

Suppression

az aks nodepool delete -g rgAks --cluster-name myAKSCluster --name nodepool2 --no-wait

Le choix des noeuds

Il est possible de créer des nodes particuliers :

  • Optimisé en quantité de mémoire ou de processeur.
  • Avec une prise en charge GPU. 
  • Optimisé pour le stockage.

Pour obtenir des informations sur les machine virtuelle présentées ci-dessus, consulter ce lien !

Ici par exemple je créé un pool de nœud conçu pour le calcul GPU.

az aks nodepool add --resource-group rgAks--cluster-name myAKSCluster --name gpunodepool --node-count 1 --node-vm-size Standard_NC6 --no-wait

Associer des nodes au pods

Maintenant que nous avons des nœuds avec des spécificités, il serait intéressant que des pods s’exécutent sur ces nœuds en conséquence. Pour ce besoin nous pouvons utiliser des rejets et des tolérances !

  • Si j’applique un rejet à un nœud je pourrais déployer sur ce nœud uniquement des pods prévu pour supporter ce rejet.
  • Je peux alors appliquer une tolérance à un pod pour lui permettre de tolérer le rejet d’un nœud.

Voici les types de rejet disponibles :

  • NoSchedule : les pods qui ne tolèrent pas ce rejet ne seront pas déployés sur le nœud.
  • PreferNoSchedule : Kubernetes évite de déployer les pods qui ne tolèrent pas ce rejet sur le nœud. Mais si besoin, il peut le faire.
  • NoExecute : Même punition que le NoSchedule mais en prime, si un pod est déjà en cours d’exécution sur ce nœud et qu’il ne tolère pas le rejet, il est supprimé de celui-ci.

Exemple

J’ai demandé un nodepool optimisé en mémoire et cpu de type Standard_F2s_v2 :

Les machines virtuelles optimisées pour le calcul ont un ratio UC/mémoire élevé. Ces tailles conviennent pour les serveurs web au trafic moyen, les appliances réseau, les processus de traitement par lot et les serveurs d’application.

https://docs.microsoft.com/fr-fr/azure/virtual-machines/linux/sizes-compute

Je vais maintenant appliquer un rejet à ce nodepool. D’abord je récupère son id :

1 3 - Les pools de nœuds dans AKS

J’applique ensuite un rejet :

kubectl taint node aks-nodepoolf2s-92754635-vmss000000 sku=calc:NoSchedule

2 2 - Les pools de nœuds dans AKS

Maintenant, je peux déployer mon pod avec la tolérance, définie via mon yaml, pour supporter le rejet :

kubectl apply -f .\deployWithToleration.yaml

5 2 - Les pools de nœuds dans AKS
3 2 - Les pools de nœuds dans AKS

On peux maintenant vérifier le déploiement de mon pod grâce à :

kubectl describe pod mypod

6 4 1024x793 - Les pools de nœuds dans AKS

J’ai bien déployé mon pod sur le nœud attendu 🙂

Grâce à ces pool de nœuds ainsi que les rejets et tolérances nous avons montré que nous pouvons prévoir des nœuds dans notre cluster AKS destinés à des types de pods bien précis. Il est donc possible d’adapter l’environnement d’exécution Kubernetes en fonction du type d’application déployé pour lui affecter plus ou moins de ressources, du stockage ou un GPU.

A bientôt !

Une réponse sur “Les pools de nœuds dans AKS”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *