Direkt zum Inhalt

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

Lesedauer: 4 Minute
0

Ich habe eksctl oder die Amazon Elastic Kubernetes Service (Amazon EKS)-Konsole verwendet, um meine Worker-Knoten zu überprüfen, zu skalieren, zu entleeren oder zu löschen.

Lösung

Worker-Knoten überprüfen

Um die Worker-Knoten aufzulisten, die du bei der Amazon EKS-Steuerebene registriert hast, führe den folgenden Befehl aus:

kubectl get nodes -o wide

In der Ausgabe kannst du den Namen, die Kubernetes-Version, das Betriebssystem und die IP-Adresse der Worker-Knoten sehen.

Führe den folgenden Befehl aus, um zusätzliche Informationen zu einem bestimmten Worker-Knoten abzurufen:

kubectl describe node/node_name

Hinweis: Ersetze node_name durch den Amazon-Ressourcennamen (ARN) des Worker-Knotens. Zum Beispiel ip-AA-BB-CC-DD.us-east-1.compute.internal.

Die Ausgabe enthält Informationen über den Worker-Knoten, wie z. B. Labels, Taints, Systeminformationen und Status.

Worker-Knoten skalieren

Hinweis: Wenn die Knotengruppen in der Amazon EKS-Konsole angezeigt werden, verwende eine verwaltete Knotengruppe, um die Worker-Knoten zu skalieren. Andernfalls verwende eine nicht verwaltete Knotengruppe.

Verwende eine der folgenden Methoden, um die Worker-Knoten zu skalieren.

Skaliere Worker-Knoten mit eksctl

Führe den folgenden Befehl aus, um die verwalteten oder nicht verwalteten Worker-Knoten mit „eksctl“ zu skalieren:

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

Hinweis: Ersetze ClusterName durch den Cluster-Namen, desiredCount durch die Anzahl der Knoten, auf die skaliert werden soll, und nodegroupName durch den Namen der Knotengruppe.

Skalieren von Worker-Knoten ohne eksctl

Um die verwalteten Worker-Knoten ohne „eksctl“ zu skalieren, bearbeite die Knotengruppenkonfiguration.

Worker-Knoten mit CloudFormation skalieren

Um AWS CloudFormation zur Skalierung der nicht verwalteten Worker-Knoten zu verwenden, verwende eine CloudFormation-Vorlage, um die Worker-Knoten für Windows oder Linux zu starten. Dann modifiziere die Parameter NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize oder NodeAutoScalingGroupMaxSize im CloudFormation-Stack.

Worker-Knoten enztleeren

Wichtig: Die Drain-Aktion isoliert den Worker-Knoten so, dass Kubernetes keine neuen Pods mehr auf dem Knoten plant. Kubernetes entfernt Pods, die auf dem Zielknoten ausgeführt werden und verhindert, dass sie Knoten entleeren.

Du kannst eine ganze Knotengruppe oder einen einzelnen Worker-Knoten entleeren.

Entleeren der gesamten Knotengruppe

Wenn du „eksctl“ verwendest, um die Worker-Knoten zu starten, führe den folgenden Befehl aus:

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

Hinweis: Ersetze ClusterName durch den Cluster-Namen und NodeGroupName durch den Knotengruppennamen.

Führe den folgenden Befehl aus, um eine entleerte Knotengruppe zu entkoppeln:

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

Hinweis: Ersetze ClusterName durch den Cluster-Namen und NodeGroupName durch den Knotengruppennamen.

Wenn du „eksctl“ nicht verwendet hast, um die Worker-Knoten zu starten, führe das folgende Skript aus, um alle Knoten einer bestimmten Kubernetes-Version zu leeren:

#!/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

Hinweis: Ersetze 1.18.8-eks-7c9bda durch die Kubernetes-Version.

Führe das folgende Skript aus, um die leeren Knoten zu entkoppeln:

#!/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: Ersetze 1.18.8-eks-7c9bda durch die Kubernetes-Version.

Führe den folgenden Befehl aus, um die Versionsnummer des Worker-Knotens abzurufen:

kubectl get nodesNAME

Hinweis: Ersetze NodesName durch den Knotennamen.

Beispielausgabe:

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

Die Versionsnummer wird in der Spalte VERSION angezeigt.

Einen einzelnen Worker-Knoten entleeren

Wenn du „eksctl“ nicht verwendet hast, um die Worker-Knoten zu starten oder einen bestimmten Knoten zu entleeren, dann isoliere den Worker-Knoten elegant. Führe den folgenden Befehl aus:

kubectl drain node_name --ignore-daemonsets

Hinweis: Ersetzen node_name durch deinen Knotennamen.

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

kubectl uncordon node_name

Hinweis: Ersetzen node_name durch deinen Knotennamen.

Du kannst die vorhandenen Anwendungen auch in eine neue Worker-Knotengruppe migrieren.

Worker-Knoten löschen

Wichtig: DU kannst eine Löschaktion nicht rückgängig machen.

Wenn du „eksctl“ verwendest, führe den folgenden Befehl aus:

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

Hinweis: Ersetze ClusterName durch den Cluster-Namen und NodeGroupName durch den Knotengruppennamen.

Wenn du eine verwaltete Knotengruppe hast, findest du weitere Informationen unter Löschen einer verwalteten Knotengruppe aus dem Cluster.

Wenn du eine nicht verwaltete Knotengruppe haben und eine CloudFormation-Vorlage verwendet hast, um die Worker-Knoten zu starten, lösche den Stack der Knotengruppe.

Wenn du eine nicht verwaltete Knotengruppe hast, aber keine CloudFormation-Vorlage verwendet hast, lösche die Amazon Elastic Compute Cloud (Amazon EC2- Auto-Scaling-Gruppe. Oder beende die Instance, wenn du keine Amazon EC2 Auto Scaling-Gruppe verwendet hast.

AWS OFFICIALAktualisiert vor einem Jahr