Automatische Knotenreparatur
Die automatische Reparatur von Knoten überwacht kontinuierlich den Zustand jedes Knotens in einem Knotenpool. Wenn ein Knoten fehlerhaft wird, wird er durch die automatische Knotenreparatur automatisch repariert. Diese Funktion verringert die Wahrscheinlichkeit von Clusterunterbrechungen und Leistungseinbußen und minimiert den Bedarf an manueller Wartung Ihrer Cluster.
Sie können die automatische Knotenreparatur aktivieren, wenn Sie einen Knotenpool erstellen oder aktualisieren. Sie aktivieren oder deaktivieren diese Funktion für Knotenpools und nicht für einzelne Knoten.
Fehlerhafte Knotenbedingungen
Bei der automatischen Knotenreparatur wird der Systemstatus jedes Knotens geprüft, um festzustellen, ob eine Reparatur erforderlich ist. Ein Knoten mit dem Status Ready
wird als fehlerfrei erachtet.
Andernfalls werden Reparaturen eingeleitet, wenn der Knoten über einen bestimmten Zeitraum hinweg wiederholt einen fehlerhaften Status meldet.
Ein fehlerhafter Status kann durch den Status NotReady
entstehen, der bei aufeinanderfolgenden Prüfungen über einen Zeitraum von etwa 15 Minuten erkannt wird. Alternativ kann ein fehlerhafter Status auch durch einen über einen Zeitraum von etwa 30 Minuten festgestellten Mangel an Speicherplatz auf dem Bootlaufwerk verursacht werden.
Mit dem Befehl kubectl get nodes
können Sie die Zustandssignale Ihres Knotens jederzeit manuell prüfen.
Strategien für die Knotenreparatur
Die automatische Reparatur von Knoten folgt bestimmten Strategien, um sowohl die allgemeine Integrität des Clusters als auch die Verfügbarkeit von Anwendungen während des Reparaturvorgangs zu gewährleisten. In diesem Abschnitt wird beschrieben, wie die Funktion zur automatischen Knotenreparatur PodDisruptionBudget
-Konfigurationen berücksichtigt, die Pod Termination
Grace Period
respektiert und andere Maßnahmen ergreift, um Unterbrechungen des Clusters bei der Reparatur von Knoten zu minimieren.
PodDisruptionBudget
für 30 Minuten ehren
Wenn ein Knoten repariert werden muss, wird er nicht sofort entleert und neu erstellt. Stattdessen berücksichtigt die Funktion zur automatischen Knotenreparatur PodDisruptionBudget-Konfigurationen (PDB) bis zu 30 Minuten lang. Danach werden alle Pods auf dem Knoten gelöscht. Eine PDB-Konfiguration definiert unter anderem die Mindestanzahl von Replikaten eines bestimmten Pods, die zu einem bestimmten Zeitpunkt verfügbar sein müssen.
Durch die Einhaltung von PodDisruptionBudget
für etwa 30 Minuten bietet die automatische Knotenreparatur die Möglichkeit, Pods sicher neu zu planen und auf andere fehlerfreie Knoten im Cluster zu verteilen. So kann die gewünschte Verfügbarkeit der Anwendung während des Reparaturvorgangs aufrechterhalten werden.
Nach Ablauf des 30-minütigen Zeitlimits wird die automatische Knotenreparatur mit dem Reparaturvorgang fortgesetzt, auch wenn dadurch die PodDisruptionBudget
verletzt wird. Ohne Zeitlimit könnte der Reparaturvorgang auf unbestimmte Zeit ins Stocken geraten, wenn die PodDisruptionBudget
-Konfiguration die für eine Reparatur erforderlichen Entfernungen verhindert.
Kulanzzeitraum für die Beendigung von Pods einhalten
Die automatische Knotenreparatur berücksichtigt auch einen Kulanzzeitraum für die Pod-Beendigung von etwa 30 Minuten. Der Kulanzzeitraum für die Pod-Beendigung bietet Pods ein Zeitfenster für ein ordnungsgemäßes Herunterfahren während der Beendigung. Während der Kulanzfrist ist das Kubelet auf einem Knoten für die Ausführung von Bereinigungsaufgaben und die Freigabe von Ressourcen verantwortlich, die den Pods auf diesem Knoten zugeordnet sind. Die automatische Knotenreparatur gibt dem Kubelet bis zu 30 Minuten Zeit, um diese Bereinigung durchzuführen. Wenn die zugewiesenen 30 Minuten abgelaufen sind, wird der Knoten zwangsweise beendet, unabhängig davon, ob die Pods ordnungsgemäß beendet wurden.
Zusätzliche Strategien für die Knotenreparatur
Bei der automatischen Knotenreparatur werden auch die folgenden Strategien implementiert:
- Wenn mehrere Knoten repariert werden müssen, werden sie nacheinander repariert, um Störungen des Clusters zu begrenzen und Arbeitslasten zu schützen.
- Wenn Sie die automatische Knotenreparatur während des Reparaturvorgangs deaktivieren, werden laufende Reparaturen trotzdem fortgesetzt, bis der Reparaturvorgang erfolgreich ist oder fehlschlägt.
Automatische Knotenreparatur aktivieren und deaktivieren
Sie können die automatische Knotenreparatur aktivieren oder deaktivieren, wenn Sie einen Knotenpool erstellen oder aktualisieren. Sie aktivieren oder deaktivieren diese Funktion für Knotenpools und nicht für einzelne Knoten.
Automatische Reparatur für einen neuen Knotenpool aktivieren
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.32.4-gke.200 \
--vm-size VM_SIZE \
--max-pods-per-node 110 \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--azure-availability-zone AZURE_ZONE \
--ssh-public-key SSH_PUBLIC_KEY" \
--subnet-id SUBNET_ID \
--enable-autorepair
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: ein eindeutiger Name für Ihren Knotenpool, z. B.node-pool-1
CLUSTER_NAME
: der Name Ihres GKE on Azure-ClustersGOOGLE_CLOUD_LOCATION
: der Google Cloud Standort, der Ihren Cluster verwaltetNODE_VERSION
: ist die Kubernetes-Version, die auf jedem Knoten im Knotenpool installiert werden soll (z. B. "1.32.4-gke.200")VM_SIZE
: eine unterstützte Azure-VM-GrößeMIN_NODES
: Mindestanzahl von Knoten im Knotenpool. Weitere Informationen finden Sie unter Cluster Autoscaling.MAX_NODES
: die maximale Anzahl von Knoten im KnotenpoolAZURE_ZONE
: die Azure-Verfügbarkeitszone, in der GKE on Azure den Knotenpool startet, z. B.3
SSH_PUBLIC_KEY
: der Text Ihres öffentlichen SSH-Schlüssels.SUBNET_ID
:die ID des Subnetzes des Knotenpools.
Automatische Reparatur für einen vorhandenen Knotenpool aktivieren
Führen Sie den folgenden Befehl aus, um die automatische Knotenreparatur für einen vorhandenen Knotenpool zu aktivieren:
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: ein eindeutiger Name für Ihren Knotenpool, z. B.node-pool-1
CLUSTER_NAME
: der Name Ihres ClustersGOOGLE_CLOUD_LOCATION
: die Google Cloud Region, die Ihren Cluster verwaltet
Automatische Reparatur für einen vorhandenen Knotenpool deaktivieren
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: ein eindeutiger Name für Ihren Knotenpool, z. B.node-pool-1
CLUSTER_NAME
: der Name Ihres ClustersGOOGLE_CLOUD_LOCATION
: die Google Cloud Region, die Ihren Cluster verwaltet
Hinweis: In GKE on Azure wird die automatische Knotenreparatur ordnungsgemäß deaktiviert. Wenn Sie die automatische Knotenreparatur für einen vorhandenen Knotenpool deaktivieren, startet GKE on Azure einen Vorgang zum Aktualisieren des Knotenpools. Der Vorgang wartet, bis alle vorhandenen Knotenreparaturen abgeschlossen sind, bevor er fortgesetzt wird.
Prüfen, ob die automatische Knotenreparatur aktiviert ist
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die automatische Knotenreparatur aktiviert ist:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: ein eindeutiger Name für Ihren Knotenpool, z. B.node-pool-1
CLUSTER_NAME
: der Name Ihres ClustersGOOGLE_CLOUD_LOCATION
: die Google Cloud Region, die Ihren Cluster verwaltet
Verlauf der Knotenreparatur
Mit dem folgenden Befehl können Sie sich den Verlauf der Reparaturen ansehen, die an einem Knotenpool durchgeführt wurden:
gcloud container azure operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME/azureNodePools/NODEPOOL_NAME
Ersetzen Sie Folgendes:
GOOGLE_CLOUD_LOCATION
: die unterstützte Google Cloud Region, die Ihren Cluster verwaltet, z. B.us-west1
PROJECT_ID
: Ihr Google Cloud ProjektCLUSTER_NAME
: der Name Ihres ClustersNODE_POOL_NAME
: ein eindeutiger Name für Ihren Knotenpool, z. B.node-pool-1
Zusammenfassung des Knotenpoolzustands
Nachdem Sie die automatische Knotenreparatur aktiviert haben, können Sie mit dem folgenden Befehl eine Zusammenfassung des Knotenpoolstatus generieren:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Eine Zusammenfassung für einen fehlerfreien Knotenpool sieht in etwa so aus:
{ "name": "some-np-name", "version": "some-version", "state": "RUNNING", ... "errors": [ { "message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair." } ], }
Die Zusammenfassung des Knotenpoolstatus gibt Aufschluss über den aktuellen Status des Knotenpools. In diesem Beispiel enthält die Zusammenfassung eine Fehlermeldung, die besagt, dass einer der beiden Knoten im Knotenpool fehlerhaft ist. Außerdem wird gemeldet, dass derzeit keine Knoten repariert werden.