Mit Google Distributed Cloud (GDC) Air-Gapped können Sie Ihre Kubernetes-Cluster nach der Erstellung mit GKE auf GDC verwalten. Mit diesem Dienst können Sie sich an die sich ändernden Anforderungen Ihrer Containerarbeitslast anpassen.
Hinweise
Zum Ansehen und Verwalten von Knotenpools in einem Kubernetes-Cluster benötigen Sie die folgenden Rollen:
- Nutzerclusteradministrator (
user-cluster-admin
) - Betrachter für Nutzerclusterknoten (
user-cluster-node-viewer
)
Diese Rollen sind nicht an einen Namespace gebunden.
Wenn Sie Befehle für einen Kubernetes-Cluster ausführen möchten, benötigen Sie die folgenden Ressourcen:
Suchen Sie den Namen des Kubernetes-Clusters oder fragen Sie Ihren Plattformadministrator danach.
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Kubernetes-Cluster, falls Sie noch keine haben.
Verwenden Sie den kubeconfig-Pfad des Kubernetes-Clusters, um
KUBERNETES_CLUSTER_KUBECONFIG
in dieser Anleitung zu ersetzen.
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 ihnen die Pods und 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
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 edit cluster KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
Ersetzen Sie Folgendes für den Kubernetes-Cluster:
KUBERNETES_CLUSTER_NAME
ist der Name des Clusters.KUBERNETES_CLUSTER_NAMESPACE
: den Namespace des Clusters.KUBERNETES_CLUSTER_KUBECONFIG
: Der Pfad der kubeconfig-Datei.
Nachdem die Clusterkonfiguration angewendet wurde, versetzt der Cluster die entsprechenden Knoten in den Wartungsmodus.
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 ...
Rufen Sie den Status der Knoten in Ihrem Cluster ab:
kubectl get nodes -n KUBERNETES_CLUSTER_NAME \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
Die Ausgabe sollte in etwa so aussehen:
NAME STATUS ROLES AGE VERSION user-gdc-01 Ready master 2d22h v1.23.5-gke.1502 user-gdc-04 Ready none 2d22h v1.23.5-gke.1502 user-gdc-05 Ready,SchedulingDisabled none 2d22h v1.23.5-gke.1502 user-gdc-06 Ready none 2d22h v1.23.5-gke.1502
Der Status
SchedulingDisabled
gibt an, dass sich ein Knoten im Wartungsmodus befindet.So rufen Sie die Anzahl der Knoten im Wartungsmodus ab:
kubectl get nodepools --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
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 eines beliebigen KUBERNETES-Clusters in der GDC-Umgebung kann angepasst werden, um mit Änderungen der Arbeitslast zu skalieren. Zum Verwalten von Knotenpools in einem Kubernetes-Cluster benötigen Sie die Rolle User Cluster Admin (user-cluster-admin
).
Diese Rolle ist nicht an einen Namespace gebunden.
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ü Kubernetes Engine > 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/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Ersetzen Sie Folgendes:
KUBERNETES_CLUSTER_NAME
: Der Name des Clusters, der den Knotenpool hostet.MANAGEMENT_API_SERVER
: Der Kubeconfig-Pfad des zonalen API-Servers, auf dem der Kubernetes-Cluster gehostet wird. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, finden Sie weitere Informationen unter Anmelden.
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/KUBERNETES_CLUSTER_NAME -n platform -o json \ --kubeconfig MANAGEMENT_API_SERVER | 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.
Cluster in der Projekthierarchie verschieben
Projekte bieten eine logische Gruppierung von Dienstinstanzen. Sie können Kubernetes-Cluster in der GDC-Projekthierarchie hinzufügen und entfernen, um Ihre Dienste entsprechend zu gruppieren.
Projekt an einen Cluster anhängen
Wenn Sie einen Cluster über die GDC-Konsole erstellen, müssen Sie mindestens ein Projekt anhängen, bevor Sie Containerarbeitslasten darin bereitstellen können. Wenn Sie einem vorhandenen Cluster zusätzliche Projekte hinzufügen müssen, führen Sie die folgenden Schritte aus:
- Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
- Klicken Sie in der Clusterliste auf den Cluster, um die Seite Clusterdetails zu öffnen.
- Wählen Sie Projekt anhängen aus.
- Wählen Sie die verfügbaren Projekte aus der Projektliste aus, die Sie hinzufügen möchten. Klicken Sie auf Speichern.
Projekt von einem Cluster trennen
So trennen Sie ein Projekt von einem vorhandenen Kubernetes-Cluster:
- Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
- Klicken Sie in der Clusterliste auf den Cluster, um die Seite Clusterdetails zu öffnen.
Klicken Sie für das Projekt, das Sie vom Cluster trennen möchten, auf delete Trennen.
Alle Cluster in einer Organisation ansehen
Sie können alle verfügbaren Kubernetes-Cluster in einer Organisation ansehen, einschließlich ihrer Status, Kubernetes-Versionen und anderer Details. Da Kubernetes-Cluster eine zonale Ressource sind, können Sie Cluster nur pro Zone auflisten.
Console
Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
Alle verfügbaren Cluster in der Organisation mit ihrem Status und anderen Informationen werden angezeigt:
kubectl
So listen Sie die verfügbaren Kubernetes-Cluster einer Organisation in der Zone auf:
kubectl get clusters.cluster.gdc.goog -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Ersetzen Sie
MANAGEMENT_API_SERVER
durch den kubeconfig-Pfad des zonalen API-Servers. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, lesen Sie die Informationen unter Anmelden.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 Kubernetes-Cluster 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ü Kubernetes Engine > Cluster aus.
Klicken Sie in der Liste der Kubernetes-Cluster 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 MANAGEMENT_API_SERVER
Ersetzen Sie
MANAGEMENT_API_SERVER
durch den kubeconfig-Pfad des zonalen API-Servers. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, lesen Sie die Informationen unter Anmelden.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 GDC air-gapped 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, GDC 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 Ihres Ingress-Dienstes nach dem Erstellen eines Kubernetes-Clusters skalieren.
Öffnen Sie die benutzerdefinierte Ressourcenspezifikation
Cluster
mit derkubectl
-Befehlszeile über den interaktiven Editor:kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
Ersetzen Sie Folgendes:
KUBERNETES_CLUSTER_NAME
: Der Name des Clusters, der die IP-Adresse bereitstellt.MANAGEMENT_API_SERVER
: Der Kubeconfig-Pfad des zonalen API-Servers, auf dem der Kubernetes-Cluster gehostet wird. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, finden Sie weitere Informationen unter Anmelden.
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.
Kubernetes-Cluster aktualisieren
Sie können ein automatisches oder manuelles Upgrade Ihres Kubernetes-Clusters durchführen. Weitere Informationen zum Upgrade Ihres Clusters finden Sie im Abschnitt Cluster-Upgrade.