Självstudie: Skala program i Azure Kubernetes Service (AKS)

Om du följde de tidigare självstudierna har du ett fungerande Kubernetes-kluster och du distribuerade azure voting-exempelappen. I den här självstudien, som är del fem av sju, skalar du ut poddarna i appen och provar autoskalning av poddar. Du får också lära dig hur du skalar ut antalet Azure VM-noder så att du ändrar klustrets kapacitet som värd för arbetsbelastningar. Lär dig att:

  • Skala Kubernetes-noderna.
  • Skala Kubernetes-poddar manuellt som kör ditt program.
  • Konfigurera poddar för automatisk skalning som kör appens klientdel.

I de kommande självstudierna uppdaterar du Azure Vote-programmet till en ny version.

Innan du börjar

I tidigare självstudier paketerade du ett program i en containeravbildning, laddade upp avbildningen till Azure Container Registry, skapade ett AKS-kluster och distribuerade programmet till AKS-klustret.

Om du inte har slutfört de här stegen och vill följa med i den här självstudien börjar du med den första självstudien Förbered ett program för AKS.

Den här självstudien kräver Azure CLI version 2.0.53 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Skala poddar manuellt

När du distribuerade Azure Vote-klientdelen och Redis-instansen i föregående självstudier skapades en enda replik.

  1. Se antalet och tillståndet för poddar i klustret med hjälp av kubectl get kommandot .

    kubectl get pods
    

    Följande exempelutdata visar en frontend-pod och en backend-pod:

    NAME                               READY     STATUS    RESTARTS   AGE
    azure-vote-back-2549686872-4d2r5   1/1       Running   0          31m
    azure-vote-front-848767080-tf34m   1/1       Running   0          31m
    
  2. Ändra manuellt antalet poddar i distributionen azure-vote-front med kommandot kubectl scale . Följande exempelkommando ökar antalet klientdelspoddar till fem:

    kubectl scale --replicas=5 deployment/azure-vote-front
    
  3. Kontrollera att ytterligare poddar har skapats med kommandot kubectl get pods .

    kubectl get pods
    
                                        READY     STATUS    RESTARTS   AGE
    azure-vote-back-2606967446-nmpcf    1/1       Running   0          15m
    azure-vote-front-3309479140-2hfh0   1/1       Running   0          3m
    azure-vote-front-3309479140-bzt05   1/1       Running   0          3m
    azure-vote-front-3309479140-fvcvm   1/1       Running   0          3m
    azure-vote-front-3309479140-hrbf2   1/1       Running   0          15m
    azure-vote-front-3309479140-qphz8   1/1       Running   0          3m
    

Automatisk skalning av poddar

Kubernetes har stöd för horisontell autoskalning av poddar så att antalet poddar i en distribution justeras beroende på CPU-användningen eller något annat mått du väljer. Måttservern distribueras automatiskt till AKS-kluster med version 1.10 och senare och tillhandahåller resursutnyttjande till Kubernetes.

  • Kontrollera versionen av AKS-klustret med kommandot az aks show .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
    

Anteckning

Om AKS-klustret har en version som är lägre än 1.10 installeras inte måttservern automatiskt. Installationsmanifest för Metrics Server är tillgängliga som en components.yaml tillgång i Metrics Server-versioner, vilket innebär att du kan installera dem via en URL. Mer information om dessa YAML-definitioner finns i avsnittet Distribution i readme.

Exempel på installation:

kubectl apply -f https://github.com/kubernetes-sigs metrics-server/releases/download/v0.3.6/components.yaml

Om du vill använda autoskalning måste alla containrar och poddar ha definierade CPU-begäranden och gränser. I distributionen azure-vote-front begär klientdelscontainern 0,25 CPU med en gräns på 0,5 PROCESSOR.

Dessa resursbegäranden och gränser definieras för varje container, enligt följande komprimerade exempel YAML:

  containers:
  - name: azure-vote-front
    image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: 250m
      limits:
        cpu: 500m

Autoskalning av poddar med hjälp av kubectl autoscale

  • Skala poddar automatiskt med kubectl autoscale kommandot . Följande kommando skalar automatiskt antalet poddar i azure-vote-front-distributionen med följande villkor: om den genomsnittliga CPU-användningen för alla poddar överskrider 50 % av den begärda användningen ökar autoskalningen poddarna upp till högst 10 instanser och minst tre instanser för distributionen:

    kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
    

Skala poddar automatiskt med hjälp av en manifestfil

  1. Skapa en manifestfil för att definiera autoskalningsbeteendet och resursgränser, enligt följande exempelmanifestfil azure-vote-hpa.yaml:

    Anteckning

    Om du använder apiVersion: autoscaling/v2kan du introducera fler mått vid automatisk skalning, inklusive anpassade mått. Mer information finns i Autoskala flera mått och anpassade mått med hjälp v2 av HorizontalPodAutoscaler.

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: azure-vote-back-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: azure-vote-back
      targetCPUUtilizationPercentage: 50 # target CPU utilization
    
    ---
    
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: azure-vote-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: azure-vote-front
      targetCPUUtilizationPercentage: 50 # target CPU utilization
    
  2. Använd autoskalningsmanifestfilen med kommandot kubectl apply .

    kubectl apply -f azure-vote-hpa.yaml
    
  3. Kontrollera statusen för autoskalning med kommandot kubectl get hpa .

    kubectl get hpa
    
    # Example output
    NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
    azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m
    

    Efter några minuter, med minimal belastning på Azure Vote-appen, minskar antalet poddrepliker till tre. Du kan använda kubectl get pods igen om du vill visa de onödiga poddarna som tas bort.

Skala AKS-noder manuellt

Om du skapade kubernetes-klustret med hjälp av kommandona i föregående självstudier har klustret två noder. Om du vill öka eller minska den här mängden kan du justera antalet noder manuellt.

I följande exempel ökas antalet agentnoder till tre i Kubernetes-klustret med namn myAKSCluster. Det tar några minuter att slutföra kommandot.

  • Skala dina klusternoder med kommandot az aks scale .

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
    

    När klustret har skalats kommer dina utdata att likna följande exempelutdata:

    "agentPoolProfiles": [
      {
        "count": 3,
        "dnsPrefix": null,
        "fqdn": null,
        "name": "myAKSCluster",
        "osDiskSizeGb": null,
        "osType": "Linux",
        "ports": null,
        "storageProfile": "ManagedDisks",
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

Nästa steg

I den här självstudien har du använt olika skalningsfunktioner i Kubernetes-klustret. Du har lärt dig att:

  • Skala Kubernetes-poddar manuellt som kör ditt program.
  • Konfigurera poddar för automatisk skalning som kör appens klientdel.
  • Skala Kubernetes-noderna manuellt.

I nästa självstudie får du lära dig hur du uppdaterar program i Kubernetes.