Hilf mit, diese Seite zu verbessern
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Skalieren Sie Pod-Bereitstellungen mit Horizontal Pod Autoscaler
Der Kubernetes Horizontal Pod Autoscaler
Der Horizontal Pod Autoscaler ist eine Standard-API-Ressource in Kubernetes, die einfach erfordert, dass eine Metrikquelle (z. B. der Kubernetes-Metrikserver) auf Ihrem Amazon-EKS-Cluster installiert ist. Sie müssen den Horizontal Pod Autoscaler nicht auf Ihrem Cluster bereitstellen oder installieren, um mit der Skalierung Ihrer Anwendungen zu beginnen. Weitere Informationen finden Sie unter Horizontal Pod Autoscaler
Verwenden Sie dieses Thema, um den Horizontal Pod Autoscaler für Ihren Amazon-EKS-Cluster vorzubereiten und zu überprüfen, ob er mit einer Beispielanwendung funktioniert.
Anmerkung
Dieses Thema basiert auf der exemplarischen Vorgehensweise für den Horizontal Pod Autoscaler
-
Sie haben einen vorhandenen Amazon-EKS-Cluster. Falls nicht, finden Sie weitere Informationen unter. Erste Schritte mit Amazon EKS
-
Sie haben den Kubernetes-Metrik-Server installiert. Weitere Informationen finden Sie unter Ressourcennutzung mit dem Kubernetes Metrics Server anzeigen.
-
Sie verwenden einen
kubectl
-Client, der für die Kommunikation mit Ihrem Amazon EKS-Cluster konfiguriert ist.
Ausführen einer Horizontal Pod Autoscaler-Testanwendung
In diesem Abschnitt stellen Sie eine Beispielanwendung bereit, um zu überprüfen, ob der Horizontal Pod Autoscaler funktioniert.
Anmerkung
Dieses Beispiel basiert auf der Anleitung zur automatischen Skalierung von Horizontal Pod in der Kubernetes-Dokumentation
-
Stellen Sie mit dem folgenden Befehl eine einfache Apache-Webserveranwendung bereit.
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
Dieser Apache-Webserver-Pod hat ein CPU-Limit von 500 Milli-CPU und er wird auf Port 80 bedient.
-
Erstellen Sie eine Horizontal Pod Autoscaler-Ressource für die
php-apache
-Bereitstellung.kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
Dieser Befehl erstellt ein Autoscaling, das für die Bereitstellung eine CPU-Auslastung von 50 Prozent anstrebt, mit mindestens einem Pod und maximal zehn Pods. Wenn die durchschnittliche CPU-Last unter 50 Prozent liegt, versucht das Autoscaling, die Anzahl der Pods in der Bereitstellung auf mindestens einen zu reduzieren. Wenn die Auslastung mehr als 50 Prozent beträgt, versucht das Autoscaling, die Anzahl der Pods in der Bereitstellung auf maximal zehn zu erhöhen. Weitere Informationen finden Sie unter Wie funktioniert ein HorizontalPodAutoscaler ?
in der Kubernetes-Dokumentation. -
Beschreiben Sie den Autoscaler mit dem folgenden Befehl, um seine Details anzuzeigen.
kubectl get hpa
Eine Beispielausgabe sieht wie folgt aus.
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 51s
Wie Sie sehen können, liegt die aktuelle CPU-Last daran
0%
, dass der Server noch nicht belastet ist. Die Pod-Anzahl hat bereits die niedrigste Grenze (eins) erreicht, sodass sie nicht skaliert werden kann. -
Erstellen Sie eine Last für den Webserver, indem Sie einen Container ausführen.
kubectl run -i \ --tty load-generator \ --rm --image=busybox \ --restart=Never \ -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
-
Um die Skalierung der Bereitstellung zu beobachten, führen Sie in regelmäßigen Abständen den folgenden Befehl in einem anderen Terminal als demjenigen aus, in dem Sie den vorherigen Schritt ausgeführt haben.
kubectl get hpa php-apache
Eine Beispielausgabe sieht wie folgt aus.
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 250%/50% 1 10 5 4m44s
Es kann mehr als eine Minute dauern, bis die Anzahl der Replikate zunimmt. Solange der tatsächliche CPU-Prozentsatz höher als der Zielprozentsatz ist, erhöht sich die Replikatanzahl auf bis zu 10. In diesem Fall ist es so
250%
, also nimmt die Anzahl derREPLICAS
weiter zu.Anmerkung
Es kann einige Minuten dauern, bis die Replikatanzahl ihr Maximum erreicht. Wenn beispielsweise nur 6 Replikate erforderlich sind, damit die CPU-Last bei oder unter 50% bleibt, kann die Auslastung nicht über 6 Replikate hinaus skaliert werden.
-
Stoppen Sie die Last. Halten Sie im Terminalfenster, in dem Sie die Last generieren, den Ladevorgang an, indem Sie die Tasten gedrückt halten.
Ctrl+C
Sie können beobachten, wie die Replikate auf 1 zurückskaliert werden, indem Sie den folgenden Befehl erneut in dem Terminal ausführen, in dem Sie die Skalierung beobachten.kubectl get hpa
Eine Beispielausgabe sieht wie folgt aus.
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 1 25m
Anmerkung
Der Standardzeitrahmen für das Zurückskalieren beträgt fünf Minuten. Es wird daher einige Zeit dauern, bis die Replikatanzahl wieder 1 erreicht, selbst wenn der aktuelle CPU-Prozentsatz 0 Prozent beträgt. Der Zeitrahmen ist veränderbar. Weitere Informationen finden Sie unter Horizontal Pod Autoscaler
in der Kubernetes-Dokumentation. -
Wenn Sie mit dem Experimentieren mit Ihrer Beispielanwendung fertig sind, löschen Sie die
php-apache
-Ressourcen.kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache