Optimiser le coût d’un cluster AKS

Soyons concret, pour optimiser le coût d’un cluster AKS il faut réussir à diminuer le nombre de Node qui constituent à un instant t le cluster.

Kubernetes - Optimiser le coût d'un cluster AKS

Réduire le pool de noeuds

Pour mettre à l’échelle un pool de noeud à 0, vous pouvez utiliser la commande ci-dessous :

az aks nodepool scale --name #nodePoolName# --cluster-name #clusterName# --resource-group #rgName# --node-count 0

Vous pouvez également mettre à l’échelle automatiquement les pools de nœuds jusque 0 , en affectant la valeur 0 au paramètre --min-count de l’autoscaler de cluster.

az aks nodepool scale --name #nodePoolName# --cluster-name #clusterName# --resource-group #rgName# --node-count 0

Cependant cette possibilité ne concerne que les node pools “users”, à contrario le node pool “system” (celui créé au provisionnement du cluster) devait toujours être opérationnel, et donc contenir au minimum un noeud.

Ce n’est maintenant plus une obligation !

Arreter et démarrer un cluster

Il est maintenant possible (en preview) d’arrêter et démarrer à volonté un cluster AKS. Cette feature peux être utile pour des cluster de dev et de test ne nécessitant pas d’être actif la nuit ou le week-end par exemple !

Attention le state du cluster sera conservé 12 mois maximum. A l’issu de ces 12 mois, il ne sera pas récupérable. Votre cluster ne pourra donc pas redémarrer.

Je m’inscrit à la preview d’AKS :

az extension add --name aks-preview

az extension update --name aks-preview

J’installe l’extension via les deux commandes ci-dessous :

az feature register --namespace "Microsoft.ContainerService" --name "StartStopPreview"

az provider register --namespace Microsoft.ContainerService

1 - Optimiser le coût d'un cluster AKS

Je créé mon ressource group puis mon cluster :

az group create --name rg-aks --location westus

az aks create --resource-group rg-aks --name aks --node-count 1

2 - Optimiser le coût d'un cluster AKS

Je peux maintenant essayer de le couper :

az aks stop --resource-group rg-aks --name myAKSCluster

On vérifie via le power state que mon cluster est bien éteint :

az aks show --resource-group rg-aks --name myAKSCluster

3 - Optimiser le coût d'un cluster AKS

Et on peux maintenant le relancer :

az aks start --resource-group rg-aks --name myAKSCluster

Et je vérifie qu’il est à nouveau opérationnel !

4 - Optimiser le coût d'un cluster AKS

Maintenant que nous avons ces commandes de définie, une automatisation via une tache Logic Apps pourrait être facilement réalisée pour éteindre mon cluster à 20h et le rallumer à 7h par exemple pour la journée de travail 🙂

C’est tout pour l’optimisation des coûts liés à notre cluster AKS !

Nous avons donc deux possibilités :

  • Diminuer le nombre de noeuds : plutôt pour un environnement de production en cas de charge réduite sur des plages horaires définie (par exemple la nuit)
  • Eteindre complètement le cluster : sur les environnements de dev et tests éventuellement la nuit et le week-end !

A bientôt !

Thomas

Laisser un commentaire

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