Exercice : activer la scalabilité du cluster sur AKS

Effectué

Activer l’autoscaler de cluster sur un cluster AKS

  1. Ouvrez Azure Cloud Shell dans votre navigateur et sélectionnez Bash.

  2. Créez un groupe de ressources Azure à l’aide de la commande az group create.

    az group create --name myResourceGroup --location eastus
    
  3. 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.

  4. Connectez-vous à votre cluster à l’aide de la commande az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  5. 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

  1. Dans Cloud Shell, créez un fichier manifeste pour le déploiement Kubernetes appelé deployment.yml en utilisant la commande touch.

    touch deployment.yml
    
  2. Ouvrez le fichier manifeste à l’aide de la commande code.

    code deployment.yml
    
  3. 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
    
  4. 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.

  1. 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
    
  2. Effectuez un scale-down du déploiement à l’aide de la commande kubectl scale deployment.

    kubectl scale deployment contoso-website --replicas 5
    
  3. 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
    
  4. 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
    
  5. 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