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.

Kurzbeschreibung

Führen Sie die Schritte im entsprechenden Abschnitt entsprechend Ihrer Anforderungen aus:

  • Überprüfen Sie Ihre Worker-Knoten
  • Skalieren Sie Ihre Worker-Knoten
  • Entleeren Sie Ihre Worker-Knoten
  • Löschen Sie Ihre Worker-Knoten

Behebung

Ü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.us-east-1.compute.internal

Die Ausgabe enthält weitere Informationen über den Worker-Knoten, einschließlich Labels, Eigenschaften, 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.

(Option 1) 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.

-oder-

(Option 2) Um Ihre verwalteten Worker-Knoten ohne Eksctl zu skalieren, führen Sie die Schritte im Abschnitt „So bearbeiten Sie eine Knotengruppenkonfiguration“ unter Aktualisieren einer verwalteten Knotengruppe aus.

-oder-

(Option 3) 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.Ändern 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 weist Kubernetes an, die Planung neuer Pods auf dem Knoten einzustellen. Pods, die auf dem Zielknoten laufen, werden aus den entleerenden Knoten entfernt, was bedeutet, dass die Pods gestoppt werden. Bedenken Sie, welche Auswirkungen dies auf Ihre Produktionsumgebung haben kann.

Sie können entweder eine ganze Knotengruppe oder einen einzelnen Worker-Knoten entleeren. Wählen Sie die entsprechende Option.

(Option 1) Entleeren Sie die gesamte 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 entkoppeln:

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:

$ kubectl get nodes
NAME                                      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

**Hinweis:**Die Versionsnummer wird in der Spalte VERSION angezeigt.

(Option 2) 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. Bedenken Sie die Auswirkungen, die dies auf Ihre Produktionsumgebung haben kann.

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 Ihre Worker-Knoten mit einer CloudFormation-Vorlage gestartet haben, löschen Sie dann den CloudFormation-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 OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren