Knoten in den Wartungsmodus versetzen

Wenn Sie Knoten reparieren oder warten müssen, sollten Sie zuerst die Knoten in den Wartungsmodus versetzen. Durch das Versetzen von Knoten in den Wartungsmodus werden ihnen die Pods/Arbeitslasten sicher entzogen und die Knoten werden von der Pod-Planung ausgeschlossen. Im Wartungsmodus können Sie auf Ihren Knoten arbeiten, ohne den Pod-Traffic möglicherweise zu beeinträchtigen.

Funktionsweise

Anthos-Cluster auf Bare Metal bieten eine Möglichkeit, Knoten in den Wartungsmodus zu versetzen. Bei diesem Ansatz wissen andere Clusterkomponenten ordnungsgemäß, dass sich der Knoten im Wartungsmodus befindet. Wenn Sie einen Knoten in den Wartungsmodus versetzen, können auf dem Knoten keine weiteren Pods geplant und vorhandene Pods gestoppt werden.

Anstelle des Wartungsmodus können Sie Kubernetes-Befehle wie kubectl cordon und kubectl drain auf einem bestimmten Knoten manuell ausführen. Wenn Sie Anthos-Cluster auf Bare-Metal-Version 1.12.0 (anthosBareMetalVersion: 1.12.0) oder niedriger ausführen, lesen Sie das bekannte Problem unter Nicht identifizierte Knoten, wenn Sie den Wartungsmodus nicht verwenden.

Wenn Sie den Wartungsmodus verwenden, führt Anthos on Bare Metal folgende Schritte aus:

  • Knotenmarkierungen werden den angegebenen Knoten hinzugefügt, um anzugeben, dass keine Pods auf den Knoten geplant oder ausgeführt werden können.

  • Ein Zeitlimit von 20 Minuten wird erzwungen, damit Knoten nicht auf das Beenden von Pods warten. Pods werden möglicherweise nicht beendet, wenn sie so konfiguriert sind, dass sie alle Markierungen tolerieren, oder wenn sie Finalizer haben. Anthos-Cluster auf Bare Metal versuchen, alle Pods zu beenden. Wenn das Zeitlimit aber überschritten wird, wird der Knoten in den Wartungsmodus versetzt. Dieses Zeitlimit verhindert, dass durch die Ausführung von Pods Upgrades blockiert werden.

  • Wenn Sie auf dem Knoten eine VM-basierte Arbeitslast ausführen, wendet Anthos-Cluster auf Bare-Metal einen NodeSelector auf den Pod der VM-Instanz an und stoppt dann die Pod. Der NodeSelector sorgt dafür, dass der VMI-Pod auf demselben Knoten neu gestartet wird, wenn der Knoten aus dem Wartungsmodus entfernt wird.

Knoten in den Wartungsmodus versetzen

Wählen Sie in Ihrer Cluster-Konfigurationsdatei für die unter maintenanceBlocks ausgewählten Knoten die IP-Bereiche aus, die Sie in den Wartungsmodus versetzen möchten. Die Knoten, die Sie auswählen, müssen bereit sein und im Cluster funktionieren.

So versetzen Sie Knoten in den Wartungsmodus:

  1. Bearbeiten Sie die Cluster-Konfigurationsdatei, um die Knoten auszuwählen, die Sie in den Wartungsmodus versetzen möchten.

    Sie können die Konfigurationsdatei mit einem Editor Ihrer Wahl bearbeiten oder die benutzerdefinierte Clusterressource direkt mit folgendem Befehl bearbeiten:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Dabei gilt:

    • CLUSTER_NAMESPACE: den Namespace des Clusters.
    • CLUSTER_NAME ist der Name des Clusters.
  2. Fügen Sie der Cluster-Konfigurationsdatei den maintenanceBlocks-Abschnitt hinzu, um entweder eine einzelne IP-Adresse oder einen Adressbereich für die Knoten anzugeben, die Sie in den Wartungsmodus versetzen möchten.

    Im folgenden Beispiel wird gezeigt, wie Sie durch die Angabe eines IP-Adressbereichs mehrere Knoten auswählen:

    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    
  3. Speichern Sie die aktualisierte Cluster-Konfiguration und wenden Sie sie an.

    Anthos Cluster on Bare Metal startet und versetzt die Knoten in den Wartungsmodus.

  4. Führen Sie folgenden Befehl aus, um den Status der Knoten in Ihrem Cluster abzurufen:

    kubectl get nodes -n CLUSTER_NAME
    

    Die Ausgabe sollte in etwa so aussehen:

    NAME                              STATUS                     ROLES    AGE     VERSION
    user-anthos-baremetal-01          Ready                      master   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-04          Ready                      <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-05          Ready,SchedulingDisabled   <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-06          Ready                      <none>   2d22h   v1.17.8-gke.16
    

    Der Status SchedulingDisabled gibt an, dass sich ein Knoten im Wartungsmodus befindet.

  5. Führen Sie folgenden Befehl aus, um die Anzahl der Knoten im Wartungsmodus abzurufen:

    kubectl get nodepools
    

    Die Antwort sollte in etwa so aussehen:

    NAME   READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
    np1    3       0             0         1                  0
    

    Die Spalte UNDERMAINTENANCE in diesem Beispiel zeigt, dass sich ein Knoten im Wartungsmodus befindet.

    Anthos Cluster on Bare Metal fügt Knoten auch folgende Markierungen hinzu, wenn sie in den Wartungsmodus versetzt werden:

    • baremetal.cluster.gke.io/maintenance:NoExecute
    • baremetal.cluster.gke.io/maintenance:NoSchedule

Knoten aus dem Wartungsmodus entfernen

So holen Sie Knoten aus dem Wartungsmodus:

  1. Bearbeiten Sie die Cluster-Konfigurationsdatei, um die Knoten zu löschen, die Sie aus dem Wartungsmodus holen möchten.

    Sie können die Konfigurationsdatei mit einem Editor Ihrer Wahl bearbeiten oder die benutzerdefinierte Clusterressource direkt mit folgendem Befehl bearbeiten:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Dabei gilt:

    • CLUSTER_NAMESPACE: den Namespace des Clusters.
    • CLUSTER_NAME ist der Name des Clusters.
  2. Bearbeiten Sie entweder die IP-Adressen, um bestimmte Knoten aus dem Wartungsmodus zu holen, oder entfernen Sie den maintenanceBlocks-Abschnitt, um alle Knoten aus dem Wartungsmodus zu holen.

  3. Speichern Sie die aktualisierte Cluster-Konfiguration und wenden Sie sie an.

  4. Mit kubectl-Befehlen können Sie den Status Ihrer Knoten prüfen.