Kubernetes-Cluster verwalten

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:

  1. Suchen Sie den Namen des Kubernetes-Clusters oder fragen Sie Ihren Plattformadministrator danach.

  2. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Kubernetes-Cluster, falls Sie noch keine haben.

  3. 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. 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 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:

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

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

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

  1. Wählen Sie im Dashboard das Projekt aus, in dem sich der Cluster befindet, den Sie bearbeiten möchten.
  2. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
  3. Wählen Sie den Clusternamen aus, dem der Knotenpool zugeordnet ist. Die Seite Clusterdetails wird angezeigt.
  4. Klicken Sie auf den Tab Knotenpools.
  5. Wählen Sie für den Knotenpool, dessen Größe Sie anpassen möchten, das Symbol  Bearbeiten aus. Die Aufforderung Knotenpool bearbeiten wird angezeigt.
  6. 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.

  7. Klicken Sie auf Speichern.

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

    Prüfen Sie in der Console, ob Ihr Knotenpool bereit ist.

API

  1. Öffnen Sie die benutzerdefinierte Ressourcenspezifikation Cluster mit der kubectl-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.
  2. 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.

  3. Speichern Sie die Datei und beenden Sie den Editor.

  4. 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:

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
  2. Klicken Sie in der Clusterliste auf den Cluster, um die Seite Clusterdetails zu öffnen.
  3. Wählen Sie Projekt anhängen aus.
  4. 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:

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
  2. Klicken Sie in der Clusterliste auf den Cluster, um die Seite Clusterdetails zu öffnen.
  3. Klicken Sie für das Projekt, das Sie vom Cluster trennen möchten, auf  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:

    Auf der Seite „Clusterdetails“ finden Sie Status und andere Informationen zu jedem Kubernetes-Cluster in der Organisation.

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

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.

  2. Klicken Sie in der Liste der Kubernetes-Cluster auf einen Clusternamen, um die zugehörigen Eigenschaften aufzurufen.

  3. Bearbeitbare Eigenschaften haben ein -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.

  1. Öffnen Sie die benutzerdefinierte Ressourcenspezifikation Cluster mit der kubectl-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.
  2. 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.

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