Wie richte ich Kubernetes Metrics Server und Horizontal Pod Autoscaler auf Amazon EKS ein?

Lesedauer: 3 Minute
0

Ich möchte Kubernetes Metrics Server und Horizontal Pod Autoscaler (HPA) auf Amazon Elastic Kubernetes Service (Amazon EKS) einrichten.

Lösung

Ihre Umgebung einrichten

  1. Erstellen Sie eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance.
  2. Installieren Sie kubectl auf Ihrer EC2-Instance.
  3. Installieren und konfigurieren Sie die neueste Version der AWS Command Line Interface (AWS CLI) auf Ihrer EC2-Instance.
  4. Konfigurieren Sie Ihre kubeconfig-Datei so, dass sie auf den Amazon-EKS-Cluster verweist.

Kubernetes-Metrics-Server erstellen

1.    Führen Sie den folgenden Befehl aus, um Metrics Server zu installieren:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

2.    Führen Sie den folgenden Befehl aus, um zu bestätigen, dass Metrics Server läuft:

kubectl get pods -n kube-system -l k8s-app=metrics-server

Die Ausgabe sieht in etwa wie folgt aus:

kubectl get pods -n kube-system -l k8s-app=metrics-server
metrics-server-85cc795fbf-79d72   1/1     Running   0          22s

Eine PHP-Apache-Bereitstellung und einen Dienst erstellen

1.    Führen Sie den folgenden Befehl aus, um eine PHP-Apache-Bereitstellung zu erstellen:

kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example

2.    Führen Sie den folgenden Befehl aus, um die CPU-Anfragen festzulegen:

kubectl patch deployment php-apache -p='{"spec":{"template":{"spec":{"containers":[{"name":"hpa-example","resources":{"requests":{"cpu":"200m"}}}]}}}}'

Wichtig: Wenn Sie den Wert für die CPU nicht richtig festlegen, ist die CPU-Auslastungsmetrik für den Pod nicht definiert und der HPA kann nicht skalieren.

3.    Führen Sie den folgenden Befehl aus, um die Bereitstellung als Dienst freizugeben:

kubectl create service clusterip php-apache --tcp=80

4.    Führen Sie den folgenden Befehl aus, um einen HPA zu erstellen:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

5.    Führen Sie den folgenden Befehl aus, um zu bestätigen, dass der HPA erstellt wurde:

kubectl get hpa

6.    Führen Sie den folgenden Befehl aus, um einen Pod zu erstellen, der eine Verbindung zu der zuvor erstellten Bereitstellung herstellt:

kubectl run -i --tty load-generator --image=busybox /bin/sh

7.    Führen Sie das folgende Skript aus, um die Auslastung des Pods in dem Namespace zu testen, den Sie in Schritt 1 verwendet haben:

while true; do wget -q -O- http://php-apache; done

Hinweis: Um die While-Schleife und die TTY-Sitzung des Load-Generator-Pods zu beenden, drücken Sie STRG + C, um die Schleife abzubrechen. Verwenden Sie dann STRG + D, um die Sitzung zu beenden.

8.    Führen Sie den folgenden Befehl aus (vorzugsweise von einem anderen Terminalfenster aus), um zu sehen, wie der HPA den Pod auf der Grundlage von CPU-Auslastungsmetriken skaliert:

kubectl get hpa -w

Der Metrics Server ist jetzt betriebsbereit und Sie können ihn verwenden, um ressourcenbasierte Metriken abzurufen.

9.    Führen Sie die folgenden Befehle aus, um die für das Testen des HPA verwendeten Ressourcen zu bereinigen:

kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator

Ähnliche Informationen

Horizontales Pod-Autoscaling (auf der Kubernetes-Website)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr