Automatische Knotenreparatur

Die automatische Knotenreparatur überwacht kontinuierlich den Systemstatus jedes Knotens in einem Knotenpool. Wenn ein Knoten fehlerhaft wird, wird er automatisch repariert. Diese Funktion verringert die Wahrscheinlichkeit von Cluster-Ausfällen 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. Beachten Sie, dass Sie diese Funktion für Knotenpools und nicht für einzelne Knoten aktivieren oder deaktivieren.

Fehlerhafte Knotenbedingungen

Die automatische Knotenreparatur prüft den Systemstatus jedes Knotens, um festzustellen, ob eine Reparatur erforderlich ist. Ein Knoten gilt als fehlerfrei, wenn er den Status Ready meldet. Andernfalls werden Reparaturen eingeleitet, wenn er für einen bestimmten Zeitraum hintereinander 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 durch einen erschöpften Speicherplatz auf dem Bootlaufwerk entstehen, der über einen Zeitraum von etwa 30 Minuten erkannt wird.

Mit dem Befehl kubectl get nodes können Sie die Zustandssignale Ihres Knotens jederzeit manuell prüfen.

Strategien für die Knotenreparatur

Die automatische Knotenreparatur folgt bestimmten Strategien, um sowohl den allgemeinen Systemstatus des Clusters als auch die Verfügbarkeit von Anwendungen während des Reparaturvorgangs zu gewährleisten. In diesem Abschnitt wird beschrieben, wie die automatische Knotenreparatur PodDisruptionBudget Konfigurationen berücksichtigt, den Pod Termination Grace Period einhält und andere Maßnahmen ergreift, um Cluster unterbrechungen bei der Reparatur von Knoten zu minimieren.

PodDisruptionBudget 30 Minuten lang berücksichtigen

Wenn ein Knoten repariert werden muss, wird er nicht sofort geleert und neu erstellt. Stattdessen berücksichtigt die automatische 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 jederzeit verfügbar sein müssen.

Indem die automatische Knotenreparatur das PodDisruptionBudget etwa 30 Minuten lang berücksichtigt, haben Pods Zeit, sicher neu geplant und auf andere fehlerfreie Knoten im Cluster verteilt zu werden. So kann die gewünschte Verfügbarkeit der Anwendung während des Reparaturvorgangs aufrechterhalten werden.

Nach Ablauf der 30 Minuten wird die Reparatur fortgesetzt, auch wenn das PodDisruptionBudget dadurch verletzt wird. Ohne Zeitlimit könnte der Reparaturvorgang unbegrenzt verzögert werden, wenn die PodDisruptionBudget-Konfiguration die für eine Reparatur erforderlichen Entfernungen verhindert.

Kulanzzeitraum für die Pod-Beendigung berücksichtigen

Die automatische Knotenreparatur berücksichtigt auch einen Kulanzzeitraum für die Pod-Beendigung von etwa 30 Minuten. Dieser Zeitraum gibt Pods Zeit, während der Beendigung ordnungsgemäß herunterzufahren. Während des Kulanzzeitraums ist das Kubelet auf einem Knoten für die Ausführung von Bereinigungsaufgaben und die Freigabe von Ressourcen verantwortlich, die mit den Pods auf diesem Knoten verknüpft sind. Die automatische Knotenreparatur gibt dem Kubelet bis zu 30 Minuten Zeit, um diese Bereinigung abzuschließen. Wenn die zugewiesenen 30 Minuten abgelaufen sind, wird die Beendigung des Knotens erzwungen, unabhängig davon, ob die Pods ordnungsgemäß beendet wurden.

Zusätzliche Strategien für die Knotenreparatur

Die automatische Knotenreparatur implementiert auch die folgenden Strategien:

  • Wenn mehrere Knoten repariert werden müssen, werden sie einzeln repariert, um Clusterunterbrechungen zu begrenzen und Arbeitslasten zu schützen.
  • Wenn Sie die automatische Knotenreparatur während des Reparaturvorgangs deaktivieren, werden laufende Reparaturen trotzdem fortgesetzt, bis die Reparatur 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.34.1-gke.4700 \
   --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-Clusters
  • GOOGLE_CLOUD_LOCATION: der Google Cloud Standort der Ihren Cluster verwaltet
  • NODE_VERSION: die Kubernetes-Version, die auf jedem Knoten im Knotenpool installiert werden soll, z.B. „1.34.1-gke.4700“
  • VM_SIZE: eine unterstützte Azure-VM-Größe
  • MIN_NODES: die Mindestanzahl von Knoten im Knoten pool. Weitere Informationen finden Sie unter Cluster Autoscaling.
  • MAX_NODES: die maximale Anzahl von Knoten im Knotenpool
  • AZURE_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 Clusters
  • GOOGLE_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 Clusters
  • GOOGLE_CLOUD_LOCATION: die Google Cloud Region, die Ihren Cluster verwaltet

Beachten Sie, dass die automatische Knotenreparatur in GKE on Azure ordnungsgemäß deaktiviert wird. 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 Clusters
  • GOOGLE_CLOUD_LOCATION: die Google Cloud Region, die Ihren Cluster verwaltet

Verlauf der Knotenreparatur

Mit dem folgenden Befehl können Sie den Verlauf der Reparaturen auf einem Knotenpool aufrufen:

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 Projekt
  • CLUSTER_NAME: der Name Ihres Clusters
  • NODE_POOL_NAME: ein eindeutiger Name für Ihren Knotenpool, z. B. node-pool-1

Zusammenfassung des Systemstatus des Knotenpools

Nachdem Sie die automatische Knotenreparatur aktiviert haben, können Sie mit dem folgenden Befehl eine Zusammenfassung des Systemstatus des Knotenpools erstellen:

gcloud container azure node-pools describe NODE_POOL_NAME \
   --cluster CLUSTER_NAME \
   --location GOOGLE_CLOUD_LOCATION

Eine Zusammenfassung des Systemstatus des Knotenpools 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 Systemstatus des Knotenpools hilft Ihnen, den aktuellen Status des Knotenpools zu verstehen. 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.