Wie man

Aktivieren von Cluster Autoscaler in einem EKS Kubernetes-Cluster

Aktivieren von Cluster Autoscaler in einem EKS Kubernetes-Cluster

Ein Cluster Autoscaler ist eine Kubernetes-Komponente, die die Größe eines Kubernetes-Clusters automatisch so anpasst, dass alle Pods ausgeführt werden können und keine unnötigen Knoten vorhanden sind. Es funktioniert mit großen Cloud-Anbietern – GCP, AWS und Azure. In diesem kurzen Tutorial erfahren Sie, wie Sie Cluster Autoscaler in Ihrem Amazon EKS-Cluster installieren und konfigurieren können. Der Cluster Autoscaler ändert Ihre Knotengruppen automatisch, sodass sie skaliert werden, wenn Sie mehr Ressourcen benötigen, und skalieren, wenn Sie nicht ausgelastete Ressourcen haben.

Sie sollten über einen funktionierenden EKS-Cluster verfügen, bevor Sie diesen Leitfaden verwenden können. Unsere Anleitung unten soll Ihnen den Einstieg erleichtern.

Kubernetes-Cluster auf AWS einfach mit EKS einrichten

Wenn Sie sich die automatische Skalierungsfunktion von Pods ansehen, lesen Sie die folgende Anleitung.

Verwenden von Horizontal Pod Autoscaler in Kubernetes EKS-Clustern

Aktivieren von Cluster Autoscaler in einem EKS Kubernetes-Cluster

Der Cluster Autoscaler erfordert einige zusätzliche IAM-Richtlinien und Ressourcen-Tagging, bevor er das Autoscaling in Ihrem Cluster verwalten kann.

Schritt 1: Zusätzliche EKS-IAM-Richtlinie erstellen

Der Cluster Autoscaler benötigt die folgenden IAM-Berechtigungen, um in Ihrem Namen Aufrufe an AWS-APIs zu tätigen.

Json-Datei für die IAM-Richtlinie erstellen:

Katze >aws-s3-eks-iam-policy.json<

Wenden Sie die Richtlinie an:

aws iam create-policy --policy-name EKS-Node-group-IAM-policy --policy-document file://aws-s3-eks-iam-policy.json

Dies ist die Ausgabe meiner Richtlinienerstellung:

 "Policy":  "PolicyName": "EKS-Node-group-IAM-policy", "PolicyId": "ANPATWFKCYAHACUQCHO3D", "Arn": "arn:aws:iam::253750766592:policy/EKS-Node- group-IAM-policy", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2020-09- 04T12:26:20+00:00", "UpdateDate": "2020-09-04T12:26:20+00:00"  

Schritt 2: Richtlinie an EKS-Knotengruppe anhängen

Wenn du das benutzt hast eksctl Befehle zum Erstellen Ihrer Knotengruppen mit -asg-Zugriff Option werden die erforderlichen Berechtigungen automatisch bereitgestellt und an Ihre Knoten-IAM-Rollen angehängt.

Melden Sie sich bei der AWS-Konsole an und gehen Sie EC2 > EKS-Instanz > Beschreibung > IAM-Rolle

Klicken Sie auf den IAM-Rollenlink, um Berechtigungen unter . hinzuzufügen Richtlinien anhängen

Hängen Sie die Richtlinie an, die wir zuvor erstellt haben.

Einstellungen bestätigen.

Machen Sie dasselbe auf EKS > Clustername > Details

Notieren Sie sich den vom Cluster verwendeten IAM-ARN und gehen Sie dann zu IAM > Rollen und suche danach.

Hängen Sie die von uns erstellte Richtlinie an die Rolle an.

Bestätigen Sie, dass die Richtlinie in der Liste der angehängten Richtlinien enthalten ist.

Schritt 3: Knotengruppen-Tags hinzufügen

Der Cluster Autoscaler benötigt die folgenden Tags in Ihren Node-Auto Scaling-Gruppen, damit sie automatisch erkannt werden können.

SchlüsselWert
k8s.io/Cluster-Autoscaler/im Besitz
k8s.io/cluster-autoscaler/aktiviertwahr

Navigieren Sie zu EKS > Cluster > Clustername > Berechnen

Wählen Sie Knotengruppe und klicken Sie auf Bearbeiten

Fügen Sie die Tags unten hinzu und speichern Sie die Änderungen, wenn Sie fertig sind.

Schritt 4: Bereitstellen des Cluster Autoscaler in EKS

Melden Sie sich bei der Maschine an, von der aus Sie den Befehl kubectl ausführen, um Cluster-Autoscaler bereitzustellen deploy.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.jaml

Sie können auch die herunterladen jaml Datei vor der Bewerbung.

wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml kubectl apply -f ./cluster-autoscaler-autodiscover.jaml

Führen Sie den folgenden Befehl aus, um die hinzuzufügen Cluster-Autoscaler.Kubernetes.io/sicher zu entfernen Anmerkung zur Bereitstellung:

kubectl -n kube-system annotate-Bereitstellung.apps/cluster-autoscaler cluster-autoscaler.Kubernetes.io/safe-to-evict="false"

Bearbeiten Sie die Cluster-Autoscaler-Bereitstellung:

kubectl edit deploy cluster-autoscaler -n kube-system

So legen Sie Ihren Clusternamen fest und fügen die folgenden Optionen hinzu

--balance-similar-node-groups --skip-nodes-with-system-pods=false

Siehe Screenshot unten für mein Setup.

Öffnen Sie die Seite mit den Cluster Autoscaler-Releases in einem Webbrowser und suchen Sie die neueste Cluster Autoscaler-Version, die der Haupt- und Nebenversion von Kubernetes Ihres Clusters entspricht. Beispiel: Die Kubernetes-Version Ihres Clusters ist 1 is.17 finden Sie die neueste Version von Cluster Autoscaler, die mit 1 . beginnt.17. Notieren Sie die semantische Versionsnummer (1.17.nein) um diese Version im nächsten Schritt zu verwenden.

Da mein Cluster ist v1.17, Ich verwende die neueste Container-Image-Version, die für 1 . verfügbar ist.17 was ist 1.17.3:

kubectl -n kube-system set Image-Bereitstellung.apps/cluster-autoscaler cluster-autoscaler=eu.gcr.io/k8s-artifacts-prod/autoscaling/cluster-autoscaler:v1.17.3

Überprüfen Sie, ob der Cluster Autoscaler Pod ausgeführt wird:

$ kubectl get pods -n kube-system -w NAME BEREIT STATUS RESTARTS ALTER aws-node-glfrs 1/1 Wird ausgeführt 0 23d aws-node-sgh8p 1/1 Wird ausgeführt 0 23d cluster-autoscaler-6f56b86d9b-p9gc7 1/1 Wird ausgeführt 5 21m # Es läuft coredns-6987776bbd-2mgxp 1/1 Läuft 0 23d coredns-6987776bbd-vdn8j 1/1 Läuft 0 23d efs-csi-node-p57gw 3/3 Läuft 0 18d efs-csi-node-z7gh9 3/3 Wird ausgeführt 0 18d kube-proxy-5glzs 1/1 Wird ausgeführt 0 23d kube-proxy-hgqm5 1/1 Wird ausgeführt 0 23d metrics-server-7cb45bbfd5-kbrt7 1/1 Wird ausgeführt 0 23d

Sie können nach Logs-Streams suchen.

kubectl -n kube-system logs -f Bereitstellung.Apps/Cluster-Autoscaler

Ausgabe:

I0904 14:28:50.937242 1 scale_down.go:431] Scale-Down-Berechnung: Ignoriert 1 Knoten, der in den letzten 5m0s nicht entfernt werden konnte I0904 14:28:50.937257 1 scale_down.go:462] Knoten-IP-192-168-138-244.eu-west-1.berechnen.intern - Speicherauslastung 0.702430 I0904 14:28:50.937268 1 scale_down.go:466] Knoten-IP-192-168-138-244.eu-west-1.berechnen.intern ist nicht zum Entfernen geeignet - Speicherauslastung zu groß (0.702430) I0904 14:28:50.937333 1 static_autoscaler.go:439] Status verkleinern: unneededOnly=false lastScaleUpTime=2020-09-04 13:57:03.11117817 +0000 UTC m=+15.907067864 lastScaleDownDeleteTime=2020-09-04 13:57:03.111178246 +0000 UTC m=+15.907067938 lastScaleDownFailTime=2020-09-04 13:57:03.111178318 +0000 UTC m=+15.907068011 scaleDownForbidden=false isDeleteInProgress=false scaleDownInCooldown=false I0904 14:28:50.937358 1 static_autoscaler.go:452] Anfangsskalierung verkleinert I0904 14:28:50.937391 1 scale_down.go:776] Keine Kandidaten für die Verkleinerung

Schritt 5: EKS Cluster Autoscaler testen

Jetzt ist die Installation abgeschlossen. Lass es uns testen.

Ich habe zwei Knoten im Cluster. Die maximale Anzahl in der Knotengruppe ist Group 3.

$ $ kubectl get node NAME STATUS ROLES ALTER VERSION ip-192-168-138-244.eu-west-1.berechnen.intern Bereit  23d v1.17.9-eks-4c6976 ip-192-168-176-247.eu-west-1.berechnen.intern Bereit  23d v1.17.9-eks-4c6976

Wir werden eine große Anzahl von Pods bereitstellen, um zu sehen, ob sie automatisch auf die maximale Anzahl von Knoten skaliert werden, die in der Knotengruppe festgelegt sind.

vim nginx-Beispiel-Autoscale.yml

Hinzufügen:

apiVersion: apps/v1 Art: Bereitstellungs-Metadaten: Name: nginx-Bereitstellungs-Labels: App: nginx-Spezifikation: Repliken: 100 Selektor: matchLabels: App: nginx-Vorlage: Metadaten: Labels: App: nginx-Spezifikation: Container: - Name: nginx-Image : nginx:1.14.2 Häfen: - ContainerPort: 80

Wenden Sie die YAML-Datei an

kubectl apply -f nginx-example-autoscale.yml

Beobachten Sie, wie neue Knoten erstellt werden.

$ watch kubectl bekommt Knoten

Sie sollten einen neuen Knoten sehen, der erstellt und dem Cluster hinzugefügt wurde.

$ kubectl get node NAME STATUS ROLES ALTER VERSION ip-192-168-119-255.eu-west-1.berechnen.intern Bereit  26m v1.17.9-eks-4c6976 ip-192-168-138-244.eu-west-1.berechnen.intern Bereit  23d v1.17.9-eks-4c6976 ip-192-168-176-247.eu-west-1.berechnen.intern Bereit  23d v1.17.9-eks-4c6976

Löschen Sie die Bereitstellung mit Pods und der Cluster sollte herunterskaliert werden.

$ kubectl delete -f nginx-example-autoscale.yml

Mehr brauchen Sie nicht, um Cluster Autoscaling in einem EKS Kubernetes Cluster zu konfigurieren.

Mehr zu EKS:

Installieren Sie Istio Service Mesh im EKS Kubernetes-Cluster

Installieren Sie CloudWatch Container Insights auf EKS | Kubernetes

Bereitstellen von Prometheus auf dem EKS Kubernetes-Cluster

Kubernetes Learning-Kurse:

KVM So erweitern/erhöhen Sie die Festplattengröße der KVM Virtual Machine (VM)
So erweitern/erhöhen Sie die Festplattengröße der KVM Virtual Machine (VM)
Wie kann ich eine virtuelle Festplatte in KVM erweitern / vergrößern / vergrößern??. Ich persönlich verwende KVM für alle Linux-Virtualisierungsprojek...
KVM So installieren Sie den KVM-Hypervisor unter Debian 10 (Buster)
So installieren Sie den KVM-Hypervisor unter Debian 10 (Buster)
In diesem Handbuch erfahren Sie, wie Sie den KVM-Hypervisor-Virtualisierungsserver unter Debian 10 (Buster) installieren. KVM (Kernel-based Virtual Ma...
Eine Welt ohne E-Mail Cal Newport hält es für möglich
Cal Newport mag die Ablenkungen der Technologie nicht. Tatsächlich glaubt Newport, dass unser Fokus auf Technologie und wie sie das moderne Geschäft d...