Övning – Aktivera klusterskalbarhet på AKS

Slutförd

Aktivera autoskalning av kluster i ett AKS-kluster

  1. Öppna Azure Cloud Shell i webbläsaren och välj Bash.

  2. Skapa en Azure-resursgrupp med kommandot az group create .

    az group create --name myResourceGroup --location eastus
    
  3. Skapa ett nytt AkS-kluster (Azure Kubernetes Service) med autoskalning av klustret aktiverat med hjälp av az aks create kommandot och --enable-cluster-autoscaler flaggan.

    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
    

    Det tar några minuter att skapa klustret.

  4. Anslut till klustret med kommandot az aks get-credentials .

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  5. Visa noderna i klustret med kommandot kubectl get nodes .

    kubectl get nodes
    

    Dina utdata bör se ut ungefär som följande exempelutdata:

    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
    

Distribuera exempelprogrammet

  1. I Cloud Shell skapar du en manifestfil för Kubernetes-distributionen med namnet deployment.yml med kommandot touch .

    touch deployment.yml
    
  2. Öppna manifestfilen med kommandot code .

    code deployment.yml
    
  3. Klistra in följande kod i manifestfilen.

    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. Spara filen och stäng redigeringsprogrammet.

Uppdatera autoskalningsprofilen för kluster

Du kan finjustera autoskalningsprofilerna genom att ange en serie flaggor i konfigurationen. Visa listan över tillgängliga flaggor i Använd autoskalningsprofilen för kluster. I det här exemplet uppdaterar du autoskalningen för att minska avsökningstiden för att söka efter väntande poddar och minska den tid det behöver vänta innan du skalar ned från ett tidigare tillstånd.

  1. Uppdatera autoskalningsprofilen az aks update för klustret med kommandot med --cluster-autoscaler-profile flaggan .

    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. Skala ned distributionen med kommandot kubectl scale deployment .

    kubectl scale deployment contoso-website --replicas 5
    
  3. Kontrollera loggarna för autoskalning av kluster och fråga efter konfigurationsmappningen cluster-autoscaler-status med hjälp av kubectl describe cm kommandot .

    kubectl describe cm cluster-autoscaler-status -n kube-system
    

    Innan nedskalningen bör dina utdata se ut ungefär som i följande exempelutdata:

    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. Vänta ungefär fem minuter tills autoskalningen slutför nedskalningen och kör sedan den föregående kubectl describe cm.

    Efter nedskalningen bör dina utdata se ut ungefär som i följande exempelutdata:

    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. Visa noderna i klustret med kommandot kubectl get nodes .

    kubectl get nodes
    

    Dina utdata bör se ut ungefär som i följande exempelutdata, där antalet noder minskas till en:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   37m    v1.26.6