Mit der Google Distributed Cloud Air-Gapped Appliance (GDC) können Sie Ihre Kubernetes-Cluster nach der Erstellung verwalten und so an Ihre sich ändernden Anforderungen an Containerarbeitslasten anpassen.
Knotenwartung durchführen
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 die zugehörigen Pods/Arbeitslasten sicher per Drain beendet 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
Der Wartungsmodus für GDC ähnelt dem Ausführen von kubectl
cordon
und kubectl drain
für einen bestimmten Knoten. Hier sind einige Details, die für den Wartungsmodus relevant sind:
- Die angegebenen Knoten werden als nicht mehr planbar markiert. Das ist die Funktion von
kubectl cordon
. - Knotenmarkierungen werden den angegebenen Knoten hinzugefügt, um anzugeben, dass keine Pods auf den Knoten geplant oder ausgeführt werden können. Diese Aktion ähnelt
kubectl drain
. - Ein Zeitlimit von 20 Minuten wird erzwungen, um sicherzustellen, dass die Knoten nicht warten, bis die Pods beendet werden. Pods werden möglicherweise nicht beendet, wenn sie so konfiguriert sind, dass sie alle Markierungen tolerieren oder Finalizer haben. GDC-Cluster versuchen, alle Pods zu beenden. Wenn das Zeitlimit jedoch ü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 GDC-Cluster einen
NodeSelector
auf den Pod der VM-Instanz an und stoppt dann den Pod. DerNodeSelector
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 die Knoten aus, die Sie in den Wartungsmodus versetzen möchten, indem Sie im Abschnitt maintenanceBlocks
Ihrer Clusterkonfigurationsdatei IP-Adressbereiche für die ausgewählten Knoten angeben. Die Knoten, die Sie auswählen, müssen den Status Ready
haben und im Cluster funktionieren.
So versetzen Sie Knoten in den Wartungsmodus:
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.
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 ...
Speichern Sie die aktualisierte Cluster-Konfiguration und wenden Sie sie an:
kubectl apply -f my-cluster.yaml
Nachdem die Clusterkonfiguration angewendet wurde, versetzt der Cluster die entsprechenden Knoten in den Wartungsmodus.
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-gdch-01 Ready master 2d22h v1.23.5-gke.1502 user-gdch-04 Ready none 2d22h v1.23.5-gke.1502 user-gdch-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdch-06 Ready none 2d22h v1.23.5-gke.1502
Der Status
SchedulingDisabled
gibt an, dass sich ein Knoten im Wartungsmodus befindet.Führen Sie folgenden Befehl aus, um die Anzahl der Knoten im Wartungsmodus abzurufen:
kubectl get nodepools
Die Antwort ähnelt dem folgenden Output:
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.Clustern werden Knoten auch folgende Markierungen hinzugefügt, wenn sie in den Wartungsmodus versetzt werden:
baremetal.cluster.gke.io/maintenance:NoExecute
baremetal.cluster.gke.io/maintenance:NoSchedule
Größe von Knotenpools ändern
Die Größe des Knotenpools jedes Nutzerclusters in der GDC-Umgebung kann angepasst werden, um mit Änderungen der Arbeitslast zu skalieren. Zum Verwalten von Knotenpools in einem Nutzercluster benötigen Sie die Rolle User Cluster Admin (user-cluster-admin
).
Führen Sie die folgenden Schritte aus, um einen Knotenpool in einem vorhandenen Cluster zu skalieren:
Console
- Wählen Sie im Dashboard das Projekt aus, in dem sich der Cluster befindet, den Sie bearbeiten möchten.
- Wählen Sie im Navigationsmenü Cluster aus.
- Wählen Sie den Clusternamen aus, dem der Knotenpool zugeordnet ist. Die Seite Clusterdetails wird angezeigt.
- Klicken Sie auf den Tab Knotenpools.
- Wählen Sie für den Knotenpool, dessen Größe Sie anpassen möchten, das Symbol edit Bearbeiten aus. Die Aufforderung Knotenpool bearbeiten wird angezeigt.
Aktualisieren Sie das Feld Anzahl der Knoten, damit es der neuen Anzahl der im Knotenpool erforderlichen Knoten entspricht. Sie können die Anzahl der Knoten entsprechend den Anforderungen Ihrer Arbeitslast erhöhen oder verringern.
Klicken Sie auf Speichern.
Rufen Sie den Tab Knotenpools für Ihren Cluster auf und prüfen Sie, ob der Knotenpool mit der neuen Größe den Status
Ready
und die richtige Anzahl von Knoten hat. Es kann einige Minuten dauern, bis der Knotenpool entsprechend Ihrer Spezifikation skaliert wird.
API
Öffnen Sie die benutzerdefinierte Ressourcenspezifikation
Cluster
mit derkubectl
-Befehlszeile über den interaktiven Editor:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Aktualisieren Sie das Feld
nodeCount
für den Knotenpool, dessen Größe geändert werden soll:nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODES
Ersetzen Sie
NUMBER_OF_WORKER_NODES
durch die aktualisierte Anzahl der Worker-Knoten, die im Knotenpool bereitgestellt werden sollen.Speichern Sie die Datei und beenden Sie den Editor.
Prüfen Sie, ob die Knotenskalierung abgeschlossen ist, indem Sie die Konfiguration des Knotenpools prüfen:
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform -o json \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG | jq .status.workerNodePoolStatuses
Prüfen Sie, ob die Zahl
readyNodes
der Anzahl der Knoten entspricht, die Sie für den Knotenpool festgelegt haben. Es kann einige Minuten dauern, bis der Knotenpool auf die von Ihnen angegebene Größe skaliert wird.
Alle Cluster in einer Organisation ansehen
Sie können alle verfügbaren Nutzercluster in einer Organisation ansehen, einschließlich ihrer Status, Kubernetes-Versionen und anderer Details.
Console
Wählen Sie im Navigationsmenü Cluster aus.
Alle verfügbaren Cluster in der Organisation mit ihrem Status und anderen Informationen werden angezeigt:
kubectl
Verfügbare Nutzercluster in einer Organisation auflisten:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Die Ausgabe sieht etwa so aus:
NAME STATE K8S VERSION user-vm-1 Running 1.25.10-gke.2100 user-test Running 1.26.5-gke.2100
Aktualisierbare Attribute ansehen
Für jeden Nutzercluster ist eine Reihe von Eigenschaften verfügbar, die nach der Erstellung geändert werden können. Sie können nur die veränderlichen Eigenschaften ändern, die sich im spec
der benutzerdefinierten Ressource Cluster
befinden. Nicht alle Eigenschaften in der spec
können nach der Bereitstellung des Clusters aktualisiert werden. So rufen Sie diese aktualisierbaren Eigenschaften auf:
Console
Wählen Sie im Navigationsmenü Cluster aus.
Klicken Sie in der Liste der Nutzercluster auf einen Clusternamen, um die zugehörigen Eigenschaften aufzurufen.
Bearbeitbare Eigenschaften haben ein edit-Symbol Bearbeiten.
kubectl
Hier finden Sie die Liste der Attribute für die
Cluster
-Spezifikation und die gültigen Werte für jedes Attribut:kubectl explain clusters.cluster.gdc.goog.spec \ --kubeconfig ORG_ADMIN_CLUSTER_KUBECONFIG
Die Ausgabe sieht etwa so aus:
KIND: Cluster VERSION: cluster.gdc.goog/v1 RESOURCE: spec <Object> DESCRIPTION: <empty> FIELDS: clusterNetwork <Object> The cluster network configuration. If unset, the default configurations with pod and service CIDR sizes are used. Optional. Mutable. initialVersion <Object> The GDCH version information of the user cluster during cluster creation. Optional. Default to use the latest applicable version. Immutable. loadBalancer <Object> The load balancer configuration. If unset, the default configuration with the ingress service IP address size is used. Optional. Mutable. nodePools <[]Object> The list of node pools for the cluster worker nodes. Optional. Mutable. releaseChannel <Object> The release channel a cluster is subscribed to. When a cluster is subscribed to a release channel, GDCH maintains the cluster versions for users. Optional. Mutable.
Aktualisieren Sie diese Einstellungen über die GDC Console oder die
kubectl
CLI. Sie können beispielsweise die Größe eines Knotenpools ändern.
Größe der Ingress-Dienst-IP-Adresse skalieren
Sie können die Größe der IP-Adresse des Ingress-Dienstes nach dem Erstellen eines Nutzerclusters skalieren.
Öffnen Sie die benutzerdefinierte Ressourcenspezifikation
Cluster
mit derkubectl
-Befehlszeile über den interaktiven Editor:kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Aktualisieren Sie das Feld
ingressServiceIPSize
auf die neue IP-Adressgröße:... spec: ... loadBalancer: ingressServiceIPSize: INGRESS_SERVICE_IP_SIZE ...
Ersetzen Sie
INGRESS_SERVICE_IP_SIZE
durch die aktualisierte Größe der IP-Adresse des Ingress-Dienstes.Speichern Sie die Datei und beenden Sie den Editor.
Es gibt kein festgelegtes Limit für die Größe der Ingress-Dienst-IP-Adresse. Die Anzahl der IP-Adressen, die Sie anfordern, wird basierend auf Ihrer Organisation erfüllt. Wenn die Anfrage nicht erfüllt werden kann, meldet der Cluster einen Fehler.