Skalieren Sie Pod-Bereitstellungen mit Horizontal Pod Autoscaler - Amazon EKS

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

Das Tool Kubernetes Horizontal Pod Autoscaler skaliert automatisch die Anzahl von Pods in einer Bereitstellung, einem Replikationscontroller oder einem Replikatsatz, basierend auf der Auslastung dieser Ressource. CPU Auf diese Weise können Ihre Anwendungen aufskalieren, um den erhöhten Bedarf zu erfüllen, oder abskalieren, wenn Ressourcen nicht benötigt werden, sodass Ihre Knoten für andere Anwendungen freigegeben werden. Wenn Sie einen CPU Zielnutzungsprozentsatz festlegen, skaliert der Horizontal Pod Autoscaler Ihre Anwendung nach innen oder außen, um zu versuchen, dieses Ziel zu erreichen.

Das Tool Horizontal Pod Autoscaler ist eine Standardressource API in Kubernetes das erfordert lediglich, dass eine Metrikquelle (wie die Kubernetes metrics server) ist auf Ihrem EKS Amazon-Cluster installiert, um zu funktionieren. Sie müssen das nicht bereitstellen oder installieren Horizontal Pod Autoscaler auf Ihrem Cluster, um mit der Skalierung Ihrer Anwendungen zu beginnen. Weitere Informationen finden Sie unter Horizontal Pod Autoscaler im Kubernetes -Dokumentation.

Verwenden Sie dieses Thema zur Vorbereitung des Horizontal Pod Autoscaler für Ihren EKS Amazon-Cluster und um zu überprüfen, ob er mit einer Beispielanwendung funktioniert.

Anmerkung

Dieses Thema basiert auf der exemplarischen Vorgehensweise für das automatische Skalieren von Horizontal Pod in der Kubernetes -Dokumentation.

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 exemplarischen Vorgehensweise für den Horizontal Pod Autoscaler in der Kubernetes -Dokumentation.

  1. 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.

  2. 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

    Mit diesem Befehl wird ein Autoscaling erstellt, das für die Bereitstellung eine CPU Auslastung von 50 Prozent anstrebt, mindestens jedoch eine Pod und maximal zehn Pods. Wenn die durchschnittliche CPU Auslastung unter 50 Prozent liegt, versucht der Autoscaler, die Anzahl der zu reduzieren Pods bei der Bereitstellung auf mindestens eins. Wenn die Last mehr als 50 Prozent beträgt, versucht das Autoscaling, die Anzahl der zu erhöhen Pods bei der Bereitstellung bis zu maximal zehn. Weitere Informationen finden Sie unter Wie HorizontalPodAutoscaler funktioniert ein? in der Kubernetes -Dokumentation.

  3. 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 Auslastung daran0%, dass der Server noch nicht ausgelastet ist. Das Tool Pod Die Anzahl befindet sich bereits an der niedrigsten Grenze (Eins) und kann daher nicht skaliert werden.

  4. 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"
  5. 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 Anzahl der Replikate auf bis zu 10. In diesem Fall ist es so250%, also nimmt die Anzahl der REPLICAS 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, dann wird die Last nicht über 6 Replikate hinaus skaliert.

  6. 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 Standardzeitraum für die Rückskalierung beträgt fünf Minuten. Es wird also einige Zeit dauern, bis die Anzahl der Replikate wieder 1 erreicht, auch wenn der aktuelle CPU Prozentsatz 0 Prozent beträgt. Der Zeitrahmen ist veränderbar. Weitere Informationen finden Sie unter Horizontal Pod Autoscaler im Kubernetes -Dokumentation.

  7. 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