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.
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
Ä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
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
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/v2
kan 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älpv2
avHorizontalPodAutoscaler
.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 autoskalningsmanifestfilen med kommandot
kubectl apply
.kubectl apply -f azure-vote-hpa.yaml
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.