Zelfstudie: toepassingen schalen in AKS (Azure Kubernetes Service)Tutorial: Scale applications in Azure Kubernetes Service (AKS)

Als u de zelfstudies hebt gevolgd, hebt u een werkend Kubernetes-cluster in AKS en hebt u de Azure Voting-voorbeeldapp geïmplementeerd.If you've followed the tutorials, you have a working Kubernetes cluster in AKS and you deployed the sample Azure Voting app. In deze zelfstudie, deel vijf van zeven, schaalt u de schillen in de app en probeert u automatisch schalen van schillen uit.In this tutorial, part five of seven, you scale out the pods in the app and try pod autoscaling. U leert ook hoe u het aantal Azure VM-knooppunten schaalt om de capaciteit van het cluster voor het hosten van werkbelastingen te wijzigen.You also learn how to scale the number of Azure VM nodes to change the cluster's capacity for hosting workloads. In deze zelfstudie leert u procedures om het volgende te doen:You learn how to:

  • Kubernetes-knooppunten schalenScale the Kubernetes nodes
  • Handmatig Kubernetes-pods schalen waarop uw toepassing wordt uitgevoerdManually scale Kubernetes pods that run your application
  • Automatisch schalen configureren van pods die de front-end-app uitvoerenConfigure autoscaling pods that run the app front-end

In latere zelf studies wordt de Azure stem-toepassing bijgewerkt naar een nieuwe versie.In later tutorials, the Azure Vote application is updated to a new version.

Voordat u begintBefore you begin

In eerdere zelfstudies is een toepassing verpakt in een containerinstallatiekopie.In previous tutorials, an application was packaged into a container image. Deze installatiekopie is geüpload naar Azure Container Registry en u hebt een AKS-cluster gemaakt.This image was uploaded to Azure Container Registry, and you created an AKS cluster. De toepassing is vervolgens geïmplementeerd in het AKS-cluster.The application was then deployed to the AKS cluster. Als u deze stappen niet hebt uitgevoerd en u deze zelfstudie wilt volgen, begint u met Tutorial 1 – Create container images (Zelfstudie 1: containerinstallatiekopieën maken).If you haven't done these steps, and would like to follow along, start with Tutorial 1 – Create container images.

Voor deze zelfstudie moet u Azure CLI versie 2.0.53 of hoger uitvoeren.This tutorial requires that you're running the Azure CLI version 2.0.53 or later. Voer az --version uit om de versie te bekijken.Run az --version to find the version. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.If you need to install or upgrade, see Install Azure CLI.

Schillen handmatig schalenManually scale pods

Bij de implementatie van de front-end van Azure Vote en het Redis-exemplaar in eerdere zelfstudies, is er één replica gemaakt.When the Azure Vote front-end and Redis instance were deployed in previous tutorials, a single replica was created. Als u het aantal en de status van pods in uw cluster wilt zien, gebruikt u de opdracht kubectl get als volgt:To see the number and state of pods in your cluster, use the kubectl get command as follows:

kubectl get pods

In het volgende voorbeeld van uitvoer ziet u één pod voor de front-end en één voor de back-end: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

Als u het aantal pods in de implementatie van azure-vote-front handmatig wilt wijzigen, gebruikt u de opdracht kubectl scale.To manually change the number of pods in the azure-vote-front deployment, use the kubectl scale command. In het volgende voorbeeld wordt het aantal pods voor de front-end verhoogd naar 5:The following example increases the number of front-end pods to 5:

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

Voer kubectl opnieuw uit om te controleren of het nieuwe Peul is gemaakt met AKS.Run kubectl get pods again to verify that AKS successfully creates the additional pods. Na een minuut zijn de peulen beschikbaar in uw cluster: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

Schillen automatisch schalenAutoscale pods

Kubernetes biedt ondersteuning voor het automatisch horizontaal schalen van schillen om zo het aantal schillen in een implementatie aan te passen op basis van het CPU-gebruik of andere geselecteerde metrische gegevens.Kubernetes supports horizontal pod autoscaling to adjust the number of pods in a deployment depending on CPU utilization or other select metrics. De Metrics Server wordt gebruikt voor het doorgeven van gegevens over het gebruik van resources aan Kubernetes en wordt automatisch geïmplementeerd in AKS-clusters met versie 1.10 en hoger.The Metrics Server is used to provide resource utilization to Kubernetes, and is automatically deployed in AKS clusters versions 1.10 and higher. Als u de versie van uw AKS-cluster wilt weergeven, gebruikt u de opdracht az aks show, zoals in het volgende voorbeeld wordt weergegeven: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

Notitie

Als uw AKS-cluster kleiner is dan 1,10, wordt de Metrics Server niet automatisch geïnstalleerd.If your AKS cluster is less than 1.10, the Metrics Server is not automatically installed. De Metrics Server-installatiemanifesten zijn beschikbaar als een components.yaml-asset op Metric Server-releases, wat betekent dat u deze kunt installeren via een 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. Zie de sectie Implementatie van het Leesmij-bestand voor meer informatie over deze YAML-definities.To learn more about these YAML definitions, see the Deployment section of the readme.

Installatievoorbeeld:Example installation:

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

Als u automatisch schalen wilt gebruiken, moeten CPU-aanvragen en -limieten voor alle containers in uw schillen en uw schillen zijn gedefinieerd.To use the autoscaler, all containers in your pods and your pods must have CPU requests and limits defined. In de azure-vote-front-implementatie vraagt de front-end container al om 0,25 CPU, met een limiet van 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. Deze resourceaanvragen en -limieten worden gedefinieerd zoals weergegeven in het volgende voorbeeldfragment:These resource requests and limits are defined as shown in the following example snippet:

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

In het volgende voorbeeld wordt de opdracht kubectl autoscale gebruikt om het aantal pods in de implementatie azure-vote-front automatisch te schalen.The following example uses the kubectl autoscale command to autoscale the number of pods in the azure-vote-front deployment. Als gemiddeld CPU-gebruik voor alle doeleinden 50% van het aangevraagde gebruik overschrijdt, verhoogt de functie voor automatisch schalen de schillen tot maximaal tien exemplaren.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. Minimaal 3 exemplaren worden dan gedefinieerd voor de implementatie:A minimum of 3 instances is then defined for the deployment:

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

U kunt ook een manifestbestand maken om het gedrag van automatisch schalen en resourcelimieten te definiëren.Alternatively, you can create a manifest file to define the autoscaler behavior and resource limits. Hier volgt een voorbeeld van een manifestbestand met de naam 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

Gebruik kubectl apply om de automatisch schalen toe te passen die is gedefinieerd in het manifestbestand azure-vote-hpa.yaml.Use kubectl apply to apply the autoscaler defined in the azure-vote-hpa.yaml manifest file.

kubectl apply -f azure-vote-hpa.yaml

Gebruik de opdracht kubectl get hpa als volgt om de status van de functie voor automatisch schalen te bekijken: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

Bij een minimale belasting van de Azure Vote-app neemt het aantal pod-replica's na enkele minuten automatisch af tot drie.After a few minutes, with minimal load on the Azure Vote app, the number of pod replicas decreases automatically to three. U kunt kubectl get pods opnieuw gebruiken om te zien dat de overbodige pods worden verwijderd.You can use kubectl get pods again to see the unneeded pods being removed.

AKS-knooppunten handmatig schalenManually scale AKS nodes

Als u uw Kubernetes-cluster in de vorige zelfstudie hebt gemaakt met de opdrachten uit de vorige zelfstudie, heeft het cluster twee knooppunten.If you created your Kubernetes cluster using the commands in the previous tutorial, it has two nodes. U kunt het aantal knooppunten handmatig aanpassen als u meer of minder containerwerkbelastingen in uw cluster plant.You can adjust the number of nodes manually if you plan more or fewer container workloads on your cluster.

In het volgende voorbeeld wordt het aantal knooppunten in het Kubernetes-cluster myAKSCluster verhoogd tot drie.The following example increases the number of nodes to three in the Kubernetes cluster named myAKSCluster. Het uitvoeren van deze opdracht duurt enkele minuten.The command takes a couple of minutes to complete.

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

Wanneer het cluster is geschaald, is de uitvoer vergelijkbaar met het volgende voorbeeld: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
  }

Volgende stappenNext steps

In deze zelfstudie hebt u verschillende schaalfuncties in uw Kubernetes-cluster gebruikt.In this tutorial, you used different scaling features in your Kubernetes cluster. U hebt geleerd hoe u:You learned how to:

  • Handmatig Kubernetes-pods schalen waarop uw toepassing wordt uitgevoerdManually scale Kubernetes pods that run your application
  • Automatisch schalen configureren van pods die de front-end-app uitvoerenConfigure autoscaling pods that run the app front-end
  • Kubernetes-knooppunten handmatig schalenManually scale the Kubernetes nodes

Ga verder met de volgende zelfstudie om te leren hoe u toepassingen bijwerkt in Kubernetes.Advance to the next tutorial to learn how to update application in Kubernetes.