Exercice : activer la scalabilité du cluster sur AKS
Activer l’autoscaler de cluster sur un cluster AKS
Ouvrez Azure Cloud Shell dans votre navigateur et sélectionnez Bash.
Créez un groupe de ressources Azure à l’aide de la commande
az group create
.az group create --name myResourceGroup --location eastus
Créez un cluster Azure Kubernetes Service (AKS) avec l’autoscaler de cluster activé à l’aide de la commande
az aks create
et de l’indicateur--enable-cluster-autoscaler
.az aks create --resource-group myResourceGroup --name myAKSCluster --enable-addons monitoring --enable-msi-auth-for-monitoring --enable-cluster-autoscaler --min-count 1 --max-count 10 --generate-ssh-keys
La création du cluster ne prend que quelques minutes.
Connectez-vous à votre cluster à l’aide de la commande
az aks get-credentials
.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Affichez les nœuds dans votre cluster en utilisant la commande
kubectl get nodes
.kubectl get nodes
Vous devez obtenir un résultat semblable à l’exemple de sortie qui suit :
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 1m v1.26.6 aks-nodepool1-12345678-vmss000001 Ready agent 1m v1.26.6 aks-nodepool1-12345678-vmss000002 Ready agent 1m v1.26.6
Déployer l’exemple d’application
Dans Cloud Shell, créez un fichier manifeste pour le déploiement Kubernetes appelé deployment.yml en utilisant la commande
touch
.touch deployment.yml
Ouvrez le fichier manifeste à l’aide de la commande
code
.code deployment.yml
Collez le code suivant dans le fichier manifeste.
apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: replicas: 35 selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http
Enregistrez le fichier et fermez l’éditeur.
Mettre à jour les profils d’autoscaler de clusters
Vous pouvez affiner les profils de l’autoscaler en définissant une série d’indicateurs dans la configuration. Affichez la liste des indicateurs disponibles dans Utiliser le profil d’autoscaler de cluster. Pour cet exemple, vous mettez à jour l’autoscaler afin de réduire le temps d’interrogation pour vérifier les pods en attente et de réduire la durée d’attente avant le scale-down d’un état précédent.
Mettez à jour le profil d’autoscaler de cluster à l’aide de la commande
az aks update
avec l’indicateur--cluster-autoscaler-profile
.az aks update --resource-group myResourceGroup --name myAKSCluster --cluster-autoscaler-profile scan-interval=5s scale-down-unready-time=5m scale-down-delay-after-add=5m
Effectuez un scale-down du déploiement à l’aide de la commande
kubectl scale deployment
.kubectl scale deployment contoso-website --replicas 5
Vérifiez les journaux de l’autoscaler de cluster et interrogez la ConfigMap cluster-autoscaler-status à l’aide de la commande
kubectl describe cm
.kubectl describe cm cluster-autoscaler-status -n kube-system
Avant d’effectuer un scale-down, votre sortie doit être semblable à l’exemple de sortie suivant :
Cluster-autoscaler status at 2023-11-09 20:08:14.892961701 +0000 UTC: Cluster-wide: Health: Healthy (ready=3 unready=0 notStarted=0 longNotStarted=0 registered=3 longUnregistered=0) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleUp: NoActivity (ready=3 registered=3) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleDown: CandidatesPresent (candidates=3) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:56:52.440038763 +0000 UTC m=+1101.015036157
Attendez environ cinq minutes pour que l’autoscaler achève d’effectuer un scale-down, puis réexécutez la commande
kubectl describe cm
précédente.Après avoir effectué un scale-down, votre sortie doit être semblable à l’exemple de sortie suivant :
Cluster-autoscaler status at 2023-11-09 20:14:39.123206413 +0000 UTC: Cluster-wide: Health: Healthy (ready=1 unready=0 (resourceUnready=0) notStarted=0 longNotStarted=0 registered=1 longUnregistered=0) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleUp: NoActivity (ready=1 registered=1) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleDown: NoCandidates (candidates=0) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 20:07:08.79828656 +0000 UTC m=+1718.924760896
Affichez les nœuds dans votre cluster en utilisant la commande
kubectl get nodes
.kubectl get nodes
Votre sortie doit être semblable à l’exemple de sortie suivant, avec un nombre de noeud réduit à un :
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 37m v1.26.6