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.
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
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
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
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 !
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