Kurz: Škálování aplikací ve službě Azure Kubernetes Service (AKS)Tutorial: Scale applications in Azure Kubernetes Service (AKS)

Pokud jste postupovali podle kurzů, máte funkční cluster Kubernetes v AKS a nasadili jste ukázkovou hlasovací aplikaci Azure.If you've followed the tutorials, you have a working Kubernetes cluster in AKS and you deployed the sample Azure Voting app. V tomto kurzu, který je pátou částí sedmidílné série, budete škálovat pody v této aplikaci a vyzkoušíte si jejich automatické škálování.In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. Naučíte se také, jak škálovat počet uzlů virtuálního počítače Azure, aby se změnila kapacita clusteru pro hostování úloh.You also learn how to scale the number of Azure VM nodes to change the cluster's capacity for hosting workloads. Získáte informace o těchto tématech:You learn how to:

  • Škálování uzlů KubernetesScale the Kubernetes nodes
  • Ruční škálování podů Kubernetes, ve kterých se spouští vaše aplikaceManually scale Kubernetes pods that run your application
  • Konfigurace automatického škálování podů, ve kterých se spouští front-end aplikaceConfigure autoscaling pods that run the app front-end

V novějších kurzech se aplikace hlasování Azure aktualizuje na novou verzi.In later tutorials, the Azure Vote application is updated to a new version.

Než začneteBefore you begin

V předchozích kurzech byla aplikace zabalena do image kontejneru.In previous tutorials, an application was packaged into a container image. Tato image se nahrála do Azure Container Registry a vytvořili jste cluster AKS.This image was uploaded to Azure Container Registry, and you created an AKS cluster. Aplikace se pak nasadí do clusteru AKS.The application was then deployed to the AKS cluster. Pokud jste tyto kroky neudělali a chcete je sledovat, začněte s kurzem 1 – vytváření imagí kontejneru.If you haven't done these steps, and would like to follow along, start with Tutorial 1 – Create container images.

Tento kurz vyžaduje, abyste spustili Azure CLI verze 2.0.53 nebo novější.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Verzi zjistíte spuštěním příkazu az --version.Run az --version to find the version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.If you need to install or upgrade, see Install Azure CLI.

Ruční škálování podůManually scale pods

Při nasazení front-endu Azure Vote a instance Redis v předchozích kurzech se vytvořila jedna replika.When the Azure Vote front-end and Redis instance were deployed in previous tutorials, a single replica was created. Pokud chcete zobrazit počet a stav podů ve vašem clusteru, použijte příkaz kubectl get následujícím způsobem:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods

Následující příklad výstupu ukazuje jeden pod front-endu a jeden pod back-endu: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

Pokud chcete ručně změnit počet podů v nasazení azure-vote-front, použijte příkaz kubectl scale.To manually change the number of pods in the azure-vote-front deployment, use the kubectl scale command. Následující příklad zvýší počet podů front-endu na 5:The following example increases the number of front-end pods to 5:

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

Spusťte kubectl znovu, abyste ověřili, že AKS úspěšně vytvořil další lusky.Run kubectl get pods again to verify that AKS successfully creates the additional pods. Po minutě, kdy jsou lusky k dispozici ve vašem clusteru: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

Automatické škálování podůAutoscale pods

Kubernetes podporuje horizontální automatické škálování podů pro úpravu počtu podů v nasazení v závislosti na využití procesoru nebo jiné vybrané metrice.Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. K poskytování využití prostředků v Kubernetes se používá server metrik, který je automaticky nasazený v clusterech AKS verze 1.10 nebo novější.The Metrics Server is used to provide resource utilization to Kubernetes, and is automatically deployed in AKS clusters versions 1.10 and higher. Pokud chcete zobrazit verzi clusteru AKS, použijte příkaz az aks show, jak je znázorněno v následujícím příkladu: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

Poznámka

Pokud je váš cluster AKS menší než 1,10, server metriky se neinstaluje automaticky.If your AKS cluster is less than 1.10, the Metrics Server is not automatically installed. Manifesty instalace serveru metriky jsou k dispozici jako components.yaml prostředek na vydaných verzích serveru metriky, což znamená, že je můžete nainstalovat přes adresu 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. Další informace o těchto definicích YAML najdete v části věnované nasazení v souboru Readme.To learn more about these YAML definitions, see the Deployment section of the readme.

Příklad instalace:Example installation:

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

Chcete-li použít automatické škálování, všechny kontejnery v luskech a vaše lusky musí mít definované požadavky na procesor a omezení.To use the autoscaler, all containers in your pods and your pods must have CPU requests and limits defined. V azure-vote-front nasazení má front-end kontejner již požadavky 0,25 procesor s limitem 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. Tyto požadavky na prostředky a omezení jsou definovány tak, jak je znázorněno v následujícím ukázkovém kódu:These resource requests and limits are defined as shown in the following example snippet:

resources:
  requests:
     cpu: 250m
  limits:
     cpu: 500m

Následující příklad využívá příkaz kubectl autoscale k automatickému škálování počtu podů v nasazení azure-vote-front.The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. Pokud průměrné využití procesoru napříč všemi lusky překročí 50% jejich vyžádaného využití, přizpůsobuje se automatické škálování až do maximálního počtu 10 instancí.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. Pro nasazení je pak definováno minimálně 3 instance:A minimum of 3 instances is then defined for the deployment:

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

Případně můžete vytvořit soubor manifestu, který definuje chování automatického škálování a omezení prostředků.Alternatively, you can create a manifest file to define the autoscaler behavior and resource limits. Následuje příklad souboru manifestu s názvem 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

Použijte kubectl apply k použití automatického škálování definovaného v azure-vote-hpa.yaml souboru manifestu.Use kubectl apply to apply the autoscaler defined in the azure-vote-hpa.yaml manifest file.

kubectl apply -f azure-vote-hpa.yaml

Pokud chcete zobrazit stav modulu automatického škálování, použijte příkaz kubectl get hpa následujícím způsobem: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

Po několika minutách se díky minimálnímu zatížení aplikace Azure Vote počet replik podů automaticky sníží na 3.After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to three. Opětovným použitím příkazu kubectl get pods můžete zobrazit odebírání nepotřebných podů.You can use kubectl get pods again to see the unneeded pods being removed.

Ruční škálování uzlů AKSManually scale AKS nodes

Pokud jste cluster Kubernetes vytvořili pomocí příkazů v předchozím kurzu, má dva uzly.If you created your Kubernetes cluster using the commands in the previous tutorial, it has two nodes. Pokud ve vašem clusteru plánujete více nebo méně úloh kontejneru, můžete počet uzlů upravit ručně.You can adjust the number of nodes manually if you plan more or fewer container workloads on your cluster.

Následující příklad zvýší počet uzlů v clusteru Kubernetes s názvem myAKSCluster na tři.The following example increases the number of nodes to three in the Kubernetes cluster named myAKSCluster. Dokončení tohoto příkazu trvá několik minut.The command takes a couple of minutes to complete.

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

Po úspěšném škálování clusteru se výstup podobá následujícímu příkladu: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
  }

Další krokyNext steps

V tomto kurzu jste v clusteru Kubernetes využili různé funkce škálování.In this tutorial, you used different scaling features in your Kubernetes cluster. Naučili jste se:You learned how to:

  • Ruční škálování podů Kubernetes, ve kterých se spouští vaše aplikaceManually scale Kubernetes pods that run your application
  • Konfigurace automatického škálování podů, ve kterých se spouští front-end aplikaceConfigure autoscaling pods that run the app front-end
  • Ruční škálování uzlů KubernetesManually scale the Kubernetes nodes

V dalším kurzu se dozvíte, jak aktualizovat aplikaci v Kubernetes.Advance to the next tutorial to learn how to update application in Kubernetes.