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

Om du har följt självstudierna så har du ett fungerande Kubernetes-kluster i AKS och du har distribuerat 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 som kör ditt program manuellt
  • Konfigurera poddar för automatisk skalning som kör appens klientdel

I senare självstudier uppdateras Azure Vote-programmet till en ny version.

Innan du börjar

I tidigare självstudier paketerades en app i en containeravbildning. Den här avbildningen laddades upp till Azure Container Registry, och du skapade ett AKS-kluster. Programmet distribuerades sedan till AKS-klustret. Om du inte har utfört de här stegen och vill följa med så kan du börja med Självstudie 1 – Skapa containeravbildningar.

Den här självstudien kräver att du kör 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 Azure Vote-programmet på klientsidan och Redis-instansen distribuerades i de föregående självstudierna skapades en enda replik. Om du vill visa antalet och tillståndet för poddar i ditt kluster använder du kommandot kubectl get på följande sätt:

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

Om du vill ändra antalet poddar i azure-vote-front-distributionen manuellt använder du kommandot kubectl scale. I följande exempel ökas antalet frontend-poddar till 5:

kubectl scale --replicas=5 deployment/azure-vote-front

Kör kubectl get pods igen för att verifiera att AKS har skapat de ytterligare poddarna. Efter någon minut är poddarna tillgängliga i klustret:

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. Metrics Server används för att förse Kubernetes resursutnyttjande och distribueras automatiskt i AKS-kluster i version 1.10 och högre. Om du vill se AKS-klusterversionen använder du kommandot az aks show, som visas i följande exempel:

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

Anteckning

Om ditt AKS-kluster är mindre än 1,10 installeras inte måttservern automatiskt. Metrics Server-installationsmanifest är tillgängliga som en tillgång i Metrics Server-versioner, vilket innebär att du components.yaml kan installera dem via en URL. Mer information om dessa YAML-definitioner finns i avsnittet Distribution i viktigt.

Exempelinstallation:

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 i dina poddar och poddar ha definierade CPU-begäranden och -gränser. I azure-vote-front-distributionen begär klientdelscontainern redan 0,25 CPU med maxgränsen 0,5 CPU.

Dessa resursbegäranden och begränsningar definieras för varje container enligt följande exempelfragment:

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

I följande exempel används kommandot kubectl autoscale för att automatiskt skala antalet poddar i azure-vote-front-distributionen. Om den genomsnittliga processoranvändningen för alla poddar överskrider 50 % av den begärda användningen ökar autoskalningen poddarna upp till högst 10 instanser. Minst 3 instanser definieras sedan för distributionen:

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

Du kan också skapa en manifestfil för att definiera autoskalningsbeteendet och resursbegränsningarna. Följande är ett exempel på en manifestfil med namnet azure-vote-hpa.yaml .

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

Använd kubectl apply för att tillämpa autoskalning som definierats i azure-vote-hpa.yaml manifestfilen.

kubectl apply -f azure-vote-hpa.yaml

Om du vill visa statusen för autoskalningen använder du kubectl get hpa-kommandot på följande sätt:

kubectl get hpa

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 podrepliker automatiskt 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älvstudie har det två noder. Du kan justera antalet noder manuellt om du planerar att ha fler eller färre containerarbetsbelastningar i klustret.

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

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

När klustret har skalats liknar utdata följande exempel:

"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 som kör ditt program manuellt
  • Konfigurera poddar för automatisk skalning som kör appens klientdel
  • Skala manuellt Kubernetes-noderna

Gå vidare till nästa självstudie och lär dig hur du uppdaterar program i Kubernetes.