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

Mit GKE on Bare Metal können Sie Knoten in den Wartungsmodus versetzen. Mit diesem Ansatz können andere Clusterkomponenten korrekt darüber informiert werden, dass sich der Knoten im Wartungsmodus befindet. Wenn Sie einen Knoten in den Wartungsmodus versetzen, können keine zusätzlichen Pods für den Knoten geplant werden und vorhandene Pods werden angehalten.

Anstatt den Wartungsmodus zu verwenden, können Sie Kubernetes-Befehle wie kubectl cordon und kubectl drain auch manuell auf einem bestimmten Knoten verwenden. Wenn Sie GKE on Bare Metal Version 1.12.0 (anthosBareMetalVersion: 1.12.0) oder niedriger ausführen, lesen Sie das bekannte Problem nicht gebundene Knoten, wenn Sie das Verfahren für den Wartungsmodus nicht verwenden.

Wenn Sie den Wartungsmodus verwenden, geht GKE on Bare Metal so vor:

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

  • Damit Knoten beim Beenden von Pods nicht im Wartezustand verbleiben, wird ein Zeitlimit von 20 Minuten erzwungen. Pods werden möglicherweise nicht beendet, wenn sie so konfiguriert sind, dass sie alle Markierungen tolerieren oder Finalizer haben. GKE on Bare Metal versucht, alle Pods zu beenden. Wenn das Zeitlimit jedoch überschritten wird, wird der Knoten in den Wartungsmodus versetzt. Durch dieses Zeitlimit wird verhindert, dass Upgrades durch ausgeführte Pods blockiert werden.

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

    Ersetzen Sie Folgendes:

    • 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.

    GKE on Bare Metal 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 --kubeconfig=KUBECONFIG

    Die Ausgabe sollte in etwa so aussehen:

    NAME                       STATUS   ROLES           AGE     VERSION
    user-anthos-baremetal-01   Ready    control-plane   2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-04   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-05   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-06   Ready    worker          2d22h   v1.27.4-gke.1600
    

    Die Knoten sind weiterhin planbar, doch durch Markierungen wird verhindert, dass Pods (ohne entsprechende Toleranz) auf dem Knoten geplant werden.

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

    kubectl get nodepools --kubeconfig ADMIN_KUBECONFIG
    

    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.

    GKE on Bare Metal fügt Knoten außerdem die folgenden Markierungen hinzu, wenn sie in den Wartungsmodus versetzt werden:

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

Abrechnungs- und Wartungsmodus

Die Abrechnung für GKE on Bare Metal basiert auf der Anzahl der vCPUs, die Ihr Cluster für Knoten hat, die Arbeitslasten ausführen können. Wenn Sie einen Knoten in den Wartungsmodus versetzen, werden die Markierungen NoExecute und NoSchedule zum Knoten hinzugefügt. Die Abrechnung wird dadurch jedoch nicht deaktiviert. Nachdem Sie einen Knoten in den Wartungsmodus versetzt haben, sperren Sie den Knoten (kubectl cordon NODE_NAME), um ihn als nicht planbar zu kennzeichnen. Sobald ein Knoten als nicht planbar markiert ist, werden der Knoten und seine zugehörigen vCPUs von der Abrechnung ausgeschlossen.

Wie auf der Seite „Preise“ beschrieben, können Sie mit kubectl die (für die Anthos-Abrechnung verwendete) vCPU-Kapazität jedes Ihrer Nutzercluster sehen. Der Befehl berücksichtigt nicht, ob der Knoten planbar ist oder nicht, er gibt nur eine vCPU-Anzahl pro Knoten an.

So ermitteln Sie die Anzahl der vCPUs pro Knoten für Ihren Nutzercluster:

kubectl get nodes \
    --kubeconfig USER_KUBECONFIG \
    -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"} \
    {.status.capacity.cpu}{\"\n\"}{end}"

Ersetzen Sie USER_KUBECONFIG durch den Pfad der kubeconfig-Datei für Ihren Nutzercluster.

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

    Ersetzen Sie Folgendes:

    • 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.