Självstudie: Skala program i Azure Kubernetes Service (AKS)Tutorial: Scale applications in 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.If you've followed the tutorials, you have a working Kubernetes cluster in AKS and you deployed the sample Azure Voting app. I den här självstudien, som är del fem av sju, skalar du ut poddarna i appen och provar autoskalning av poddar.In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. 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.You also learn how to scale the number of Azure VM nodes to change the cluster's capacity for hosting workloads. Lär dig att:You learn how to:

  • Skala Kubernetes-nodernaScale the Kubernetes nodes
  • Skala Kubernetes-poddar som kör ditt program manuelltManually scale Kubernetes pods that run your application
  • Konfigurera poddar för automatisk skalning som kör appens klientdelConfigure autoscaling pods that run the app front-end

I senare självstudier uppdateras Azure Vote-programmet till en ny version.In later tutorials, the Azure Vote application is updated to a new version.

Innan du börjarBefore you begin

I tidigare självstudier paketerades en app i en containeravbildning.In previous tutorials, an application was packaged into a container image. Den här avbildningen laddades upp till Azure Container Registry, och du skapade ett AKS-kluster.This image was uploaded to Azure Container Registry, and you created an AKS cluster. Programmet distribuerades sedan till AKS-klustret.The application was then deployed to the AKS cluster. 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.If you haven't done these steps, and would like to follow along, start with Tutorial 1 – Create container images.

Den här självstudien kräver att du kör Azure CLI version 2.0.53 eller senare.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Kör az --version för att hitta versionen.Run az --version to find the version. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.If you need to install or upgrade, see Install Azure CLI.

Skala poddar manuelltManually scale pods

När Azure Vote-programmet på klientsidan och Redis-instansen distribuerades i de föregående självstudierna skapades en enda replik.When the Azure Vote front-end and Redis instance were deployed in previous tutorials, a single replica was created. 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:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods

Följande exempelutdata visar en frontend-pod och en backend-pod:The following example output shows one front-end pod and one back-end 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.To manually change the number of pods in the azure-vote-front deployment, use the kubectl scale command. I följande exempel ökas antalet frontend-poddar till 5:The following example increases the number of front-end pods to 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.Run kubectl get pods again to verify that AKS successfully creates the additional pods. Efter någon minut är poddarna tillgängliga i klustret:After a minute or so, the pods are available in your cluster:

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 poddarAutoscale pods

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.Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. Metrics Server används för att förse Kubernetes resursutnyttjande och distribueras automatiskt i AKS-kluster i version 1.10 och högre.The Metrics Server is used to provide resource utilization to Kubernetes, and is automatically deployed in AKS clusters versions 1.10 and higher. Om du vill se AKS-klusterversionen använder du kommandot az aks show, som visas i följande exempel:To see the version of your AKS cluster, use the az aks show command, as shown in the following example:

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.If your AKS cluster is less than 1.10, the Metrics Server is not automatically installed. 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.Metrics Server installation manifests are available as a components.yaml asset on Metrics Server releases, which means you can install them via a url. Mer information om dessa YAML-definitioner finns i avsnittet Distribution i viktigt.To learn more about these YAML definitions, see the Deployment section of the readme.

Exempelinstallation:Example 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 i dina poddar och poddar ha definierade CPU-begäranden och -gränser.To use the autoscaler, all containers in your pods and your pods must have CPU requests and limits defined. I azure-vote-front-distributionen begär klientdelscontainern redan 0,25 CPU med maxgränsen 0,5 CPU.In the azure-vote-front deployment, the front-end container already requests 0.25 CPU, with a limit of 0.5 CPU. Dessa resursbegäranden och begränsningar definieras enligt följande exempelavsnitt:These resource requests and limits are defined as shown in the following example snippet:

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.The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. 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.If average CPU utilization across all pods exceeds 50% of their requested usage, the autoscaler increases the pods up to a maximum of 10 instances. Minst 3 instanser definieras sedan för distributionen:A minimum of 3 instances is then defined for the deployment:

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.Alternatively, you can create a manifest file to define the autoscaler behavior and resource limits. Följande är ett exempel på en manifestfil med namnet azure-vote-hpa.yaml .The following is an example of a manifest file named 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.Use kubectl apply to apply the autoscaler defined in the azure-vote-hpa.yaml manifest file.

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:To see the status of the autoscaler, use the kubectl get hpa command as follows:

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.After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to three. Du kan använda kubectl get pods igen om du vill visa de onödiga poddarna som tas bort.You can use kubectl get pods again to see the unneeded pods being removed.

Skala AKS-noder manuelltManually scale AKS nodes

Om du skapade Kubernetes-klustret med hjälp av kommandona i föregående självstudie har det två noder.If you created your Kubernetes cluster using the commands in the previous tutorial, it has two nodes. Du kan justera antalet noder manuellt om du planerar att ha fler eller färre containerarbetsbelastningar i klustret.You can adjust the number of nodes manually if you plan more or fewer container workloads on your cluster.

I följande exempel ökas antalet agentnoder till tre i Kubernetes-klustret med namn myAKSCluster.The following example increases the number of nodes to three in the Kubernetes cluster named myAKSCluster. Det tar några minuter att slutföra kommandot.The command takes a couple of minutes to complete.

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

När klustret har skalats liknar utdata följande exempel:When the cluster has successfully scaled, the output is similar to following example:

"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 stegNext steps

I den här självstudien har du använt olika skalningsfunktioner i Kubernetes-klustret.In this tutorial, you used different scaling features in your Kubernetes cluster. Du har lärt dig att:You learned how to:

  • Skala Kubernetes-poddar som kör ditt program manuelltManually scale Kubernetes pods that run your application
  • Konfigurera poddar för automatisk skalning som kör appens klientdelConfigure autoscaling pods that run the app front-end
  • Skala manuellt Kubernetes-nodernaManually scale the Kubernetes nodes

Gå vidare till nästa självstudie och lär dig hur du uppdaterar program i Kubernetes.Advance to the next tutorial to learn how to update application in Kubernetes.