Tutorial: Skalieren von Anwendungen in Azure Kubernetes Service (AKS)
Wenn Sie die vorherigen Tutorials durchgearbeitet haben, verfügen Sie über einen funktionsfähigen Kubernetes-Cluster sowie die Azure Store Front-App.
In diesem Tutorial, Teil sechs von sieben, skalieren Sie die Pods in der App, testen Sie die automatische Skalierung von Pods und skalieren die Anzahl der Azure-VM-Knoten, um die Kapazität des Clusters für das Hosten von Workloads zu ändern. Folgendes wird vermittelt:
- Skalieren der Kubernetes-Knoten
- Manuelles Skalieren von Kubernetes-Pods, die Ihre Anwendung ausführen
- Konfigurieren der automatischen Skalierung von Pods, die das App-Front-End ausführen
Voraussetzungen
In den vorherigen Tutorials haben Sie eine Anwendung in ein Containerimage gepackt, das Image in Azure Container Registry hochgeladen, einen AKS-Cluster erstellt, eine Anwendung im AKS-Cluster bereitgestellt und Azure Service Bus für die erneute Bereitstellung einer aktualisieren Anwendung verwendet. Wenn Sie diese Schritte noch nicht ausgeführt haben und dieses Tutorial durcharbeiten möchten, beginnen Sie mit Tutorial 1:Vorbereiten einer Anwendung für AKS.
Für dieses Tutorial wird mindestens Version 2.34.1 der Azure-Befehlszeilenschnittstelle vorausgesetzt. Führen Sie az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sei bei Bedarf unter Installieren der Azure CLI.
Manuelles Skalieren von Pods
Zeigen Sie die Pods in Ihrem Cluster mit dem Befehl
kubectl get
an.kubectl get pods
Die folgende Beispielausgabe zeigt die Pods, die für die Azure Store Front-App ausgeführt werden:
NAME READY STATUS RESTARTS AGE order-service-848767080-tf34m 1/1 Running 0 31m product-service-4019737227-2q2qz 1/1 Running 0 31m store-front-2606967446-2q2qz 1/1 Running 0 31m
Mit dem Befehl
kubectl scale
können Sie die Anzahl von Pods in der Bereitstellung von store-front manuell ändern.kubectl scale --replicas=5 deployment.apps/store-front
Mit dem Befehl
kubectl get pods
können Sie überprüfen, ob die zusätzlichen Pods erstellt wurden.kubectl get pods
Die folgende Beispielausgabe zeigt die zusätzlichen Pods, die für die Azure Store Front-App ausgeführt werden:
READY STATUS RESTARTS AGE store-front-2606967446-2q2qzc 1/1 Running 0 15m store-front-3309479140-2hfh0 1/1 Running 0 3m store-front-3309479140-bzt05 1/1 Running 0 3m store-front-3309479140-fvcvm 1/1 Running 0 3m store-front-3309479140-hrbf2 1/1 Running 0 15m store-front-3309479140-qphz8 1/1 Running 0 3m
Automatisches Skalieren von Pods
Zum Verwenden der horizontalen Pod-Autoskalierung müssen für alle Container CPU-Anforderungen und -Grenzwerte festgelegt sein, und Pods müssen Anforderungen festgelegt haben. In der aks-store-quickstart
-Bereitstellung fordert der Front-End-Container 1 m CPUs an, und es gilt ein Grenzwert von 1000 m CPUs.
Diese Ressourcenanforderungen und -grenzwerte sind so für jeden Container festgelegt, wie im folgenden VAML-Beispielcode gezeigt:
...
containers:
- name: store-front
image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
ports:
- containerPort: 8080
name: store-front
...
resources:
requests:
cpu: 1m
...
limits:
cpu: 1000m
...
Autoskalierung von Pods mithilfe einer Manifestdatei
Erstellen Sie eine Manifestdatei, um das Verhalten der Autoskalierung und die Ressourcengrenzwerte zu bestimmen, wie in der folgenden Kurzform-Beispielmanifestdatei
aks-store-quickstart-hpa.yaml
gezeigt:apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: store-front-hpa spec: maxReplicas: 10 # define max replica count minReplicas: 3 # define min replica count scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: store-front metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
Wenden Sie die Manifestdatei für die Autoskalierung mithilfe des Befehls
kubectl apply
an.kubectl apply -f aks-store-quickstart-hpa.yaml
Überprüfen Sie mit dem Befehl
kubectl get hpa
den Status der Autoskalierung.kubectl get hpa
Nach einigen Minuten mit minimaler Last in der Azure Store Front-App sinkt die Anzahl von Podreplikaten auf 3. Sie können
kubectl get pods
erneut ausführen, um zu sehen, wie die nicht benötigten Pods entfernt werden.
Hinweis
Sie können das Kubernetes-based Event Driven Autoscaling-Add-On (KEDA) für AKS auf Ihrem Cluster aktivieren, um die Skalierung auf Basis der Anzahl der Ereignisse zu steuern, die verarbeitet werden müssen. Weitere Informationen finden Sie unter Vereinfachte Anwendungsautoskalierung mit dem Add-On von Kubernetes-based Event Driven Autoscaling (KEDA) (Vorschau).
Manuelles Skalieren von AKS-Knoten
Wenn Sie Ihren Kubernetes-Cluster mithilfe der Befehle im vorherigen Tutorial erstellt haben, verfügt der Cluster über zwei Knoten. Wenn Sie diesen Wert erhöhen oder verringern möchten, können Sie die Anzahl der Knoten manuell anpassen.
Im folgenden Beispiel wird die Anzahl von Knoten im Kubernetes-Cluster myAKSCluster auf drei erhöht. Diese Ausführung dieses Befehls dauert einige Minuten.
Skalieren Sie Ihre Clusterknoten mit dem Befehl
az aks scale
.az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Nachdem der Cluster erfolgreich skaliert wurde, ähnelt Ihre Ausgabe der folgenden Beispielausgabe:
"aadProfile": null, "addonProfiles": null, "agentPoolProfiles": [ { ... "count": 3, "mode": "System", "name": "nodepool1", "osDiskSizeGb": 128, "osDiskType": "Managed", "osType": "Linux", "ports": null, "vmSize": "Standard_DS2_v2", "vnetSubnetId": null ... } ... ]
Sie können die Knoten in Ihrem Cluster auch automatisch skalieren. Weitere Informationen finden Sie unter Verwenden der Autoskalierung für Cluster mit Knotenpools.
Nächste Schritte
In diesem Tutorial haben Sie verschiedene Skalierungsfunktionen in Ihrem Kubernetes-Cluster verwendet. Sie haben Folgendes gelernt:
- Manuelles Skalieren von Kubernetes-Pods, die Ihre Anwendung ausführen
- Konfigurieren der automatischen Skalierung von Pods, die das App-Front-End ausführen
- Manuelles Skalieren der Kubernetes-Knoten
Im nächsten Tutorial erfahren Sie, wie Sie ein Upgrade von Kubernetes in Ihrem AKS-Cluster durchführen.
Azure Kubernetes Service