Tutorial: Skalieren von Anwendungen in Azure Kubernetes Service (AKS)
Wenn Sie die Tutorials durchgearbeitet haben, verfügen Sie über einen funktionsfähigen Kubernetes-Cluster in AKS und haben die Azure Voting-Beispiel-App bereitgestellt. In diesem Tutorial – Teil 5 von 7 – skalieren Sie die Pods in der App auf und testen das Feature der automatischen Skalierung von Pods. Sie erfahren auch, wie Sie die Anzahl von Azure-VM-Knoten skalieren, um die Clusterkapazität 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
In nachfolgenden Tutorials wird die Anwendung Azure Vote auf eine neue Version aktualisiert.
Voraussetzungen
In den vorherigen Tutorials wurde eine Anwendung als Containerimage verpackt. Dieses Image wurde in Azure Container Registry hochgeladen, und Sie haben einen AKS-Cluster erstellt. Die Anwendung wurde dann für den AKS-Cluster bereitgestellt. Wenn Sie diese Schritte nicht ausgeführt haben und dies jetzt nachholen möchten, beginnen Sie mit Tutorial 1: Erstellen von Containerimages.
Für dieses Tutorial müssen Sie mindestens Version 2.0.53 der Azure CLI ausführen. 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
Wenn in vorhergehenden Tutorials das Azure Vote-Front-End und eine Redis-Instanz bereitgestellt wurden, wurde ein einzelnes Replikat erstellt. Verwenden Sie den Befehl kubectl get wie folgt, um Anzahl und Status der Pods in Ihrem Cluster anzuzeigen:
kubectl get pods
Die folgende Beispielausgabe zeigt einen Front-End-Pod und einen 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
Ändern Sie die Anzahl von Pods in der Bereitstellung azure-vote-front manuell mithilfe des Befehls kubectl scale. Im folgenden Beispiel wird die Anzahl von Front-End-Pods auf 5 erhöht:
kubectl scale --replicas=5 deployment/azure-vote-front
Führen Sie kubectl get pods erneut aus, um sicherzustellen, dass AKS die zusätzlichen Pods erstellt. Nach ca. einer Minute sind die Pods in Ihrem Cluster verfügbar:
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
Automatisches Skalieren von Pods
Kubernetes unterstützt die automatische horizontale Skalierung von Pods, um die Anzahl von Pods in einer Bereitstellung je nach CPU-Nutzung und anderen ausgewählten Metriken anzupassen. Der Metrikserver wird verwendet, um die Ressourcenverwendung für Kubernetes bereitzustellen, und in AKS-Clustern der Version 1.10 und höher wird er automatisch bereitgestellt. Verwenden Sie zum Anzeigen der Version Ihres AKS-Clusters den Befehl az aks show. Dies ist im folgenden Beispiel dargestellt:
az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
Hinweis
Hat Ihr AKS-Cluster eine ältere Version als 1.10, wird der Metrikserver nicht automatisch installiert. Installationsmanifeste für Metrikserver sind als Ressource vom Typ components.yaml
in Metrikserverversionen verfügbar. Das bedeutet, dass sie über eine URL installiert werden können. Weitere Informationen zu diesen YAML-Definitionen finden Sie in der Infodatei im Abschnitt Bereitstellung.
Beispielinstallation:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
Um die automatische Skalierungsfunktion zu verwenden, müssen für alle Container in Ihren Pods sowie für Ihre Pods CPU-Anforderungen und -Grenzwerte definiert sein. In der azure-vote-front
-Bereitstellung fordert der Front-End-Container bereits 0,25 CPU an, und es gilt ein Grenzwert von 0,5 CPU.
Diese Ressourcenanforderungen und -grenzwerte sind so für jeden Container definiert, wie im folgenden Beispielcodeausschnitt gezeigt:
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
Das folgende Beispiel verwendet den Befehl kubectl autoscale, um die Anzahl von Pods in der Bereitstellung azure-vote-front automatisch zu skalieren. Wenn die durchschnittliche CPU-Auslastung aller Pods 50 % der angeforderten Nutzung überschreitet, erhöht die Autoskalierung die Pods auf maximal 10 Instanzen. Mindestens 3 Instanzen werden dann für die Bereitstellung festgelegt:
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
Alternativ können Sie eine Manifestdatei erstellen, um das Verhalten der Autoskalierung und Ressourcengrenzwerte zu definieren. Es folgt ein Beispiel für eine Manifestdatei namens 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
Verwenden Sie kubectl apply
, um die in der Manifestdatei azure-vote-hpa.yaml
definierte Autoskalierung anzuwenden.
kubectl apply -f azure-vote-hpa.yaml
Führen Sie den kubectl get hpa
-Befehl wie folgt aus, um den Status der automatischen Skalierungsfunktion anzuzeigen:
kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
azure-vote-front Deployment/azure-vote-front 0% / 50% 3 10 3 2m
Nach einigen Minuten mit minimaler Last in der Azure Vote-App sinkt die Anzahl von Podreplikaten automatisch auf drei. Sie können kubectl get pods
erneut ausführen, um zu sehen, wie die nicht benötigten Pods entfernt werden.
Hinweis
Weitere Beispiele zur Verwendung der horizontalen automatischen Podskalierung finden Sie in der exemplarischen Vorgehensweise zu HorizontalPodAutoscaler.
Manuelles Skalieren von AKS-Knoten
Wenn Sie Ihren Kubernetes-Cluster mithilfe der Befehle im vorherigen Tutorial erstellt haben, verfügt er über zwei Knoten. Sie können die Anzahl der Knoten manuell anpassen, wenn Sie größere oder kleinere Containerworkloads in Ihrem Cluster planen.
Im folgenden Beispiel wird die Anzahl von Knoten im Kubernetes-Cluster myAKSCluster auf drei erhöht. Diese Ausführung dieses Befehls dauert einige Minuten.
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Wenn der Cluster erfolgreich skaliert wurde, sieht die Ausgabe so wie im folgenden Beispiel aus:
"agentPoolProfiles": [
{
"count": 3,
"dnsPrefix": null,
"fqdn": null,
"name": "myAKSCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
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
Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Anwendungen in Kubernetes aktualisiert werden.