Wie kann ich meine Worker-Knoten in Amazon EKS überprüfen, skalieren, löschen oder entleeren?

Lesedauer: 4 Minute
0

Ich habe meine Amazon Elastic Kubernetes Service (Amazon EKS)-Worker-Knoten mit Eksctl oder der AWS-Managementkonsole gestartet. Jetzt möchte ich meine Worker-Knoten überprüfen, skalieren, entleeren oder löschen.

Lösung

Überprüfen Sie Ihre Worker-Knoten

Um die Worker-Knoten aufzulisten, die bei der Amazon EKS-Steuerebene registriert sind, führen Sie den folgenden Befehl aus:

kubectl get nodes -o wide

Die Ausgabe gibt den Namen, die Kubernetes-Version, das Betriebssystem und die IP-Adresse der Worker-Knoten zurück.

Um zusätzliche Informationen über einen einzelnen Worker-Knoten zu erhalten, führen Sie den folgenden Befehl aus:

kubectl describe node/node_name

Hinweis: Ersetzen Sie node_name durch Ihren Wert, zum Beispiel: ip-XX-XX-XX-XX.us-east-1.compute.internal.

Die Ausgabe enthält weitere Informationen über den Worker-Knoten, einschließlich Labels, Taints, Systeminformationen und Status.

Skalieren Sie Ihre Worker-Knoten

**Hinweis:**Wenn Ihre Knotengruppen in der Amazon EKS-Konsole angezeigt werden, verwenden Sie eine verwaltete Knotengruppe. Andernfalls verwenden Sie eine nicht verwaltete Knotengruppe.

Verwenden Sie eine der folgenden Methoden, um Ihre Worker-Knoten zu skalieren.

Skalieren Sie Worker-Knoten mit eksctl

Führen Sie den folgenden Befehl aus, um Ihre verwalteten oder nicht verwalteten Worker-Knoten mit eksctl zu skalieren:

eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName

Hinweis: Ersetzen Sie clusterName, desiredCount und nodegroupName durch Ihre Werte.

Skalieren von Worker-Knoten ohne eksctl

Um Ihre verwalteten Worker-Knoten ohne eksctl zu skalieren, bearbeiten Sie die Knotengruppenkonfiguration.

Skalieren Sie Worker-Knoten mit CloudFormation

Um Ihre nicht verwalteten Worker-Knoten mithilfe von AWS CloudFormation zu skalieren, führen Sie die folgenden Schritte aus:

  1. Verwenden Sie eine CloudFormation-Vorlage, um Ihre Worker-Knoten für Windows oder Linux zu starten.
  2. Modifizieren Sie die Parameter NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize, oder NodeAutoScalingGroupMaxSize in Ihrem CloudFormation-Stack.

Entleeren Sie Ihre Worker-Knoten

Wichtig: Die Drain-Aktion isoliert den Worker-Knoten, und Kubernetes plant keine neuen Pods mehr auf dem Knoten. Pods, die auf dem Zielknoten ausgeführt werden, werden aus den entleerenden Knoten entfernt und gestoppt.

Sie können entweder eine ganze Knotengruppe oder einen einzelnen Worker-Knoten entleeren.

Entleeren der gesamten Knotengruppe

Wenn Sie eksctl verwenden, um Ihre Worker-Knoten zu starten, führen Sie den folgenden Befehl aus:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName

Hinweis: Ersetzen Sie clusterName und nodegroupName durch Ihre Werte.

Führen Sie den folgenden Befehl aus, um die Knotengruppe zu leeren:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo

Hinweis: Ersetzen Sie clusterName und nodegroupName durch Ihre Werte.

Wenn Sie eksctl nicht verwenden, um Ihre Worker-Knoten zu starten, identifizieren Sie alle Knoten einer bestimmten Kubernetes-Version und entleeren Sie sie. Zum Beispiel:

#!/bin/bash  
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Draining $node"
    kubectl drain $node --ignore-daemonsets --delete-local-data
done

Um alle Knoten einer bestimmten Kubernetes-Version zu identifizieren und zu entkoppeln, verwenden Sie den folgenden Code:

#!/bin/bash  
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Uncordon $node"
    kubectl uncordon $node
done

Hinweis: Führen Sie den folgenden Befehl aus, um die Version Ihres Worker-Knotens abzurufen. Die Versionsnummer wird in der Spalte VERSION angezeigt:

$ kubectl get nodesNAME                                      STATUS   ROLES    AGE     VERSION
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda

Entleeren Sie einen einzelnen Worker-Knoten

Wenn Sie eksctl nicht verwenden, um Ihre Worker-Knoten zu starten, oder wenn Sie nur einen bestimmten Knoten leeren möchten, isolieren Sie Ihren Worker-Knoten ordnungsgemäß:

kubectl drain node_name --ignore-daemonsets

**Hinweis:**Ersetzen Sie node_name durch Ihren Wert.

Um die Isolierung rückgängig zu machen, führen Sie den folgenden Befehl aus:

kubectl uncordon node_name

**Hinweis:**Ersetzen Sie node_name durch Ihren Wert.

Informationen zur Migration Ihrer vorhandenen Anwendungen zu einer neuen Worker-Knotengruppe finden Sie unter Migrieren zu einer neuen Knotengruppe.

Löschen Sie Ihre Worker-Knoten

Wichtig: Die Löschaktion kann nicht wiederhergestellt werden.

Wenn Sie eksctl verwenden, führen Sie den folgenden Befehl aus:

eksctl delete nodegroup --cluster=clusterName --name=nodegroupName

Wenn Sie über eine verwaltete Knotengruppe verfügen, führen Sie die Schritte unter Löschen einer verwalteten Knotengruppe aus.

Wenn Sie eine nicht verwaltete Knotengruppe haben und eine CloudFormation-Vorlage verwendet haben, um Ihre Worker-Knoten zu starten, löschen Sie den Stack. Sie müssen den Stack löschen, den Sie für Ihre Knotengruppe für Windows oder Linux erstellt haben.

Wenn Sie eine nicht verwaltete Knotengruppe haben und keine CloudFormation-Vorlage verwendet haben, um Ihre Worker-Knoten zu starten, löschen Sie die Auto-Scaling-Gruppe für Ihre Worker-Knoten. Oder beenden Sie die Instance direkt, wenn Sie keine Auto-Scaling-Gruppe verwendet haben.

AWS OFFICIALAktualisiert vor einem Jahr