Zelfstudie: toepassingen schalen in AKS (Azure Kubernetes Service)
Als u de vorige zelfstudies hebt gevolgd, hebt u een werkend Kubernetes-cluster en hebt u de Azure Voting-voorbeeld-app geïmplementeerd. In deze zelfstudie, deel vijf van zeven, schaalt u de schillen in de app en probeert u automatisch schalen van schillen uit. U leert ook hoe u het aantal Azure VM-knooppunten schaalt om de capaciteit van het cluster voor het hosten van werkbelastingen te wijzigen. In deze zelfstudie leert u procedures om het volgende te doen:
- Schaal de Kubernetes-knooppunten.
- Schaal handmatig Kubernetes-pods die uw toepassing uitvoeren.
- Configureer pods voor automatisch schalen die de app-front-end uitvoeren.
In de komende zelfstudies werkt u de Azure Vote-toepassing bij naar een nieuwe versie.
Voordat u begint
In eerdere zelfstudies hebt u een toepassing verpakt in een containerinstallatiekopie, de installatiekopie geüpload naar Azure Container Registry, een AKS-cluster gemaakt en de toepassing geïmplementeerd in het AKS-cluster.
Als u deze stappen nog niet hebt voltooid en deze zelfstudie wilt volgen, begint u met de eerste zelfstudie , Een toepassing voorbereiden voor AKS.
Voor deze zelfstudie is Azure CLI versie 2.0.53 of hoger vereist. Voer az --version
uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.
Schillen handmatig schalen
Toen u in de vorige zelfstudies de Azure Vote-front-end en het Redis-exemplaar hebt geïmplementeerd, is er één replica gemaakt.
Bekijk het aantal en de status van pods in uw cluster met behulp van de
kubectl get
opdracht .kubectl get pods
In het volgende voorbeeld van uitvoer ziet u één pod voor de front-end en één voor de back-end:
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
Wijzig handmatig het aantal pods in de implementatie azure-vote-front met behulp van de
kubectl scale
opdracht . Met de volgende voorbeeldopdracht wordt het aantal front-endpods verhoogd naar vijf:kubectl scale --replicas=5 deployment/azure-vote-front
Controleer of de extra pods zijn gemaakt met behulp van de
kubectl get pods
opdracht .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 schalen
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. De Metrics Server wordt automatisch geïmplementeerd in AKS-clusters met versie 1.10 en hoger en biedt resourcegebruik aan Kubernetes.
Controleer de versie van uw AKS-cluster met behulp van de
az aks show
opdracht .az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
Notitie
Als uw AKS-cluster een lagere versie heeft dan 1.10, wordt de Metrics Server niet automatisch geïnstalleerd. Metrics Server-installatiemanifesten zijn beschikbaar als een components.yaml
asset in Metrics Server-releases. Dit betekent dat u ze via een URL kunt installeren. Zie de sectie Implementatie van het Leesmij-bestand voor meer informatie over deze YAML-definities.
Voorbeeldinstallatie:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Als u de automatische schaalaanpassing wilt gebruiken, moeten alle containers en pods gedefinieerde CPU-aanvragen en -limieten hebben. In de azure-vote-front
implementatie vraagt de front-endcontainer 0,25 CPU aan met een limiet van 0,5 CPU.
Deze resourceaanvragen en limieten worden gedefinieerd voor elke container, zoals wordt weergegeven in het volgende verkorte voorbeeld van 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
Pods automatisch schalen met behulp van kubectl autoscale
Pods automatisch schalen met behulp van de
kubectl autoscale
opdracht . Met de volgende opdracht wordt het aantal pods in de implementatie azure-vote-front automatisch geschaald met de volgende voorwaarden: als het gemiddelde CPU-gebruik voor alle pods hoger is dan 50% van het aangevraagde gebruik, verhoogt de automatische schaalaanpassing de pods tot een maximum van 10 exemplaren en minimaal drie exemplaren voor de implementatie:kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
Pods automatisch schalen met behulp van een manifestbestand
Maak een manifestbestand om het gedrag van de automatische schaalaanpassing en resourcelimieten te definiëren, zoals wordt weergegeven in het volgende voorbeeldmanifestbestand
azure-vote-hpa.yaml
:Notitie
Als u gebruikt
apiVersion: autoscaling/v2
, kunt u meer metrische gegevens introduceren bij automatisch schalen, waaronder aangepaste metrische gegevens. Zie Automatisch schalen van meerdere metrische gegevens en aangepaste metrische gegevens met behulpv2
van deHorizontalPodAutoscaler
voor meer informatie.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
Pas het manifestbestand voor automatische schaalaanpassing toe met behulp van de
kubectl apply
opdracht .kubectl apply -f azure-vote-hpa.yaml
Controleer de status van de automatische schaalaanpassing met behulp van de
kubectl get hpa
opdracht .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
Na een paar minuten, met minimale belasting van de Azure Vote-app, neemt het aantal podreplica's af tot drie. U kunt
kubectl get pods
opnieuw gebruiken om te zien dat de overbodige pods worden verwijderd.
AKS-knooppunten handmatig schalen
Als u uw Kubernetes-cluster hebt gemaakt met behulp van de opdrachten in de vorige zelfstudies, heeft uw cluster twee knooppunten. Als u dit aantal wilt verhogen of verlagen, kunt u het aantal knooppunten handmatig aanpassen.
In het volgende voorbeeld wordt het aantal knooppunten in het Kubernetes-cluster myAKSCluster verhoogd tot drie. Het uitvoeren van deze opdracht duurt enkele minuten.
Schaal uw clusterknooppunten met behulp van de
az aks scale
opdracht .az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Zodra het cluster is geschaald, is de uitvoer vergelijkbaar met de volgende voorbeelduitvoer:
"agentPoolProfiles": [ { "count": 3, "dnsPrefix": null, "fqdn": null, "name": "myAKSCluster", "osDiskSizeGb": null, "osType": "Linux", "ports": null, "storageProfile": "ManagedDisks", "vmSize": "Standard_D2_v2", "vnetSubnetId": null }
Volgende stappen
In deze zelfstudie hebt u verschillende schaalfuncties in uw Kubernetes-cluster gebruikt. U hebt geleerd hoe u:
- Schaal handmatig Kubernetes-pods die uw toepassing uitvoeren.
- Configureer pods voor automatisch schalen die de app-front-end uitvoeren.
- Schaal de Kubernetes-knooppunten handmatig.
In de volgende zelfstudie leert u hoe u toepassingen bijwerkt in Kubernetes.