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 und Ihre vorhandenen Clusterknoten mit den folgenden Workflows verwalten:

Dieses Dokument richtet sich an IT-Administratoren in der Gruppe der Plattformadministratoren, die Containerarbeitslasten verwalten, die in Clustern gehostet werden, die sich über mehrere Projekte erstrecken, sowie an Entwickler in der Gruppe der Anwendungsoperatoren, die für die Erstellung von Anwendungsarbeitslasten in einem einzelnen Projekt verantwortlich sind. Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.

Hinweis

Um die Aufgaben in diesem Dokument auszuführen, müssen Sie die erforderlichen Berechtigungen anfordern und Ihre Umgebung vorbereiten.

IAM-Rollen anfordern

Sie benötigen bestimmte Rollen, um die Berechtigungen zu erhalten, die Sie zum Verwalten Ihres Kubernetes-Clusters benötigen. Die erforderlichen Rollen hängen davon ab, ob Sie in einem gemeinsam genutzten Cluster mit Organisationsbereich oder in einem Standardcluster mit Projektbereich arbeiten. Weitere Informationen finden Sie unter Kubernetes-Clusterkonfigurationen.

Freigegebene Clusterrollen

Wenn Sie Ihren freigegebenen Kubernetes-Cluster und seine Ressourcen ansehen und verwalten möchten, bitten Sie den IAM-Administrator Ihrer Organisation, Ihnen die folgenden Rollen zuzuweisen, je nachdem, welche Aufgabe Sie ausführen möchten:

  • Projektersteller (project-creator): Projektrssourcen erstellen oder ansehen. Diese Rolle ist erforderlich, um einem Projekt einen freigegebenen Cluster zuzuweisen.

  • Projektbearbeiter (project-editor): Projektressourcen löschen, aktualisieren oder ansehen. Diese Rolle ist erforderlich, um einen freigegebenen Cluster von einem Projekt zu trennen.

  • Betrachter des Nutzerclusters (user-cluster-viewer): kann den freigegebenen Cluster und seine Ressourcen ansehen. Diese Rolle bietet Zugriff auf die APIs der Verwaltungsebene für den freigegebenen Cluster, der auf dem Management-API-Server gehostet wird.

Diese Rollen sind nicht an einen Projekt-Namespace gebunden.

Standard-Clusterrollen

Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle Standard Cluster Viewer (standard-cluster-viewer) zuzuweisen, damit Sie Ihren Standard-Kubernetes-Cluster und seine Ressourcen ansehen können. Diese Rolle bietet Zugriff auf die APIs der Verwaltungsebene für den Standardcluster, der auf dem Management-API-Server gehostet wird.

Diese Rolle ist an Ihren Projekt-Namespace gebunden.

Umgebung vorbereiten

Wenn Sie Befehle für einen Kubernetes-Cluster über die API ausführen möchten, benötigen Sie die folgenden Ressourcen:

  • Suchen Sie den Namen des Kubernetes-Clusters oder fragen Sie ein Mitglied der Gruppe „Plattformadministrator“, wie der Clustername lautet.

  • Ersetzen Sie CLUSTER_NAME in dieser Anleitung durch den Namen des Kubernetes-Clusters.

  • Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management-API-Server.

  • Verwenden Sie den kubeconfig-Pfad des Management-API-Servers, um MANAGEMENT_API_SERVER in dieser Anleitung zu ersetzen.

Cluster in der Projekthierarchie verschieben

Projekte bieten eine logische Gruppierung von Dienstinstanzen. Sie können freigegebene Kubernetes-Cluster in der GDC-Projekthierarchie hinzufügen und entfernen, um Ihre Dienste entsprechend zu gruppieren. Standardcluster können in der Projekthierarchie nicht verschoben werden, da sie nur für ein einzelnes Projekt gelten.

Projekt an einen freigegebenen Cluster anhängen

Wenn Sie einen freigegebenen 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:

Console

  1. Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
  2. Klicken Sie in der Liste der Cluster auf den Clusternamen, um die Seite Clusterdetails zu öffnen.
  3. Wählen Sie Projekt anhängen aus.
  4. Klicken Sie in der Liste der verfügbaren Projekte auf den Projektnamen, um das Projekt an den Cluster anzuhängen.
  5. Klicken Sie auf Speichern.

API

  • Erstellen Sie eine neue benutzerdefinierte ProjectBinding-Ressource für Ihren Cluster:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: resourcemanager.gdc.goog/v1
    kind: ProjectBinding
    metadata:
      name: CLUSTER_NAME-PROJECT_NAME
      namespace: platform
      labels:
        resourcemanager.gdc.goog/projectbinding-for-user-project: "true"
    spec:
      clusterRef:
       name: CLUSTER_NAME
      selector:
        nameSelector:
          matchNames:
          - PROJECT_NAME
    EOF
    

    Ersetzen Sie Folgendes:

    • MANAGEMENT_API_SERVER: Der kubeconfig-Pfad des zonalen API-Servers.
    • CLUSTER_NAME ist der Name des Clusters.
    • PROJECT_NAME: der Name des Projekts, an das der Cluster gebunden werden soll. Jede ProjectBinding-Ressource kann nur einem Cluster zugeordnet werden. Wenn für ein Projekt Zugriff auf mehrere Cluster erforderlich ist, muss für jeden Cluster eine eindeutige ProjectBinding erstellt werden.

Terraform

  1. Fügen Sie in eine Terraform-Konfigurationsdatei das folgende Code-Snippet ein, um die benutzerdefinierte Ressource ProjectBinding zu erstellen:

    provider "kubernetes" {
      config_path = "MANAGEMENT_API_SERVER"
    }
    
    resource "kubernetes_manifest" "PROJECT_BINDING_RESOURCE_NAME" {
      manifest = {
        "apiVersion" = "resourcemanager.gdc.goog/v1"
        "kind" = "ProjectBinding"
        "metadata" = {
          "name" = "CLUSTER_NAME-PROJECT_NAME"
          "namespace" = "platform"
          "labels" = {
            "resourcemanager.gdc.goog/projectbinding-for-user-project" = "true"
          }
        }
        "spec" = {
          "clusterRef" = {
            "name" = "CLUSTER_NAME"
          }
          "selector" = {
            "nameSelector" = {
              "matchNames" = [
                "PROJECT_NAME",
              ]
            }
          }
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • MANAGEMENT_API_SERVER: Der kubeconfig-Pfad des zonalen API-Servers.
    • PROJECT_BINDING_RESOURCE_NAME: Der Terraform-Ressourcenname der Projektbindung, z. B. CLUSTER_NAME-PROJECT_NAME-binding. Dieser Name wird von Terraform verwendet, um Ihre Projektbindung zu identifizieren, und nicht von GDC.
    • CLUSTER_NAME ist der Name des Clusters. Jede ProjectBinding-Ressource kann nur einem Cluster zugeordnet werden. Wenn für ein Projekt Zugriff auf mehrere Cluster erforderlich ist, muss für jeden Cluster eine eindeutige ProjectBinding erstellt werden.
    • PROJECT_NAME: der Name des Projekts, an das gebunden werden soll. Jede ProjectBinding-Ressource kann nur einem Cluster zugeordnet werden. Wenn für ein Projekt der Zugriff auf mehrere Cluster erforderlich ist, muss für jeden Cluster eine eindeutige ProjectBinding erstellt werden.
  2. Wenden Sie die neue Projektbindung an:

    terraform apply
    

Projekt von einem freigegebenen Cluster trennen

Das Trennen eines Projekts von einem freigegebenen Cluster kann erhebliche Änderungen mit sich bringen, z. B. das Löschen von Arbeitslasten, die im Cluster ausgeführt werden. Machen Sie sich mit den Folgen vertraut, bevor Sie ein Projekt von einem gemeinsam genutzten Cluster trennen.

So trennen Sie ein Projekt von einem vorhandenen freigegebenen Cluster:

Console

  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 vom Cluster getrennt werden soll, auf  Trennen.

API

  • Löschen Sie die ProjectBinding-Ressource, die das Projekt und den Cluster verknüpft:

    kubectl --kubeconfig MANAGEMENT_API_SERVER delete projectbinding \
        CLUSTER_NAME-PROJECT_NAME -n platform
    

    Ersetzen Sie Folgendes:

    • MANAGEMENT_API_SERVER: Der kubeconfig-Pfad des zonalen API-Servers.
    • CLUSTER_NAME ist der Name des Clusters.
    • PROJECT_NAME: der Name des Projekts, das vom Cluster getrennt werden soll.

Terraform

  • Löschen Sie die Projektbindungsressource:

    terraform destroy -target kubernetes_manifest.PROJECT_BINDING_RESOURCE_NAME
    

    Ersetzen Sie PROJECT_BINDING_RESOURCE_NAME durch den Terraform-Ressourcennamen der zu löschenden Projektbindung, z. B. CLUSTER_NAME-PROJECT_NAME-binding. Dieser Name wird von Terraform verwendet, um Ihre Projektbindung zu identifizieren, und nicht von GDC.

Alle Cluster in einem Projekt oder einer Organisation ansehen

Sie können alle verfügbaren Kubernetes-Cluster in einem Projekt oder einer Organisation ansehen, einschließlich ihrer Status, Kubernetes-Versionen und anderer Details.

Da Kubernetes-Cluster eine zonale Ressource sind, können Sie Cluster nur nach Zone auflisten.

Console

  1. Wählen Sie in der Projektauswahl Ihr Projekt oder Ihre Organisation aus.

    Standardcluster sind projektbezogen und freigegebene Cluster sind organisationsbezogen. Wählen Sie den richtigen Bereich aus, um den entsprechenden Kubernetes-Clustertyp aufzurufen.

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

    Alle verfügbaren gemeinsam genutzten Cluster in der Organisation mit ihren Status und anderen Informationen werden angezeigt:

    Auf der Detailseite für Cluster finden Sie Status und andere Informationen für jeden freigegebenen Cluster in der Organisation.

gdcloud

  • Listen Sie die verfügbaren Kubernetes-Cluster der Zone auf:

    gdcloud clusters list
    

    Die Ausgabe sieht etwa so aus:

    CLUSTERREF.NAME   READINESS.STATE   TYPE   CURRENTVERSION.USERCLUSTERVERSION     CURRENTVERSION.SUPPORT.STATUS
    user-vm-1         Ready             user   1.15.0-gdch.394225-1.28.15-gke.1200   In Support
    user-vm-2         Ready             user   1.15.0-gdch.394225-1.29.12-gke.800    In Support
    

API

  • Listen Sie die verfügbaren Kubernetes-Cluster der Zone auf:

    kubectl get clusters.cluster.gdc.goog -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ersetzen Sie Folgendes:

    • MANAGEMENT_API_SERVER: Der kubeconfig-Pfad des zonalen API-Servers.
    • KUBERNETES_CLUSTER_NAMESPACE: der Namespace des Clusters. Verwenden Sie für gemeinsam genutzte Cluster den Namespace platform. Verwenden Sie für Standardcluster den Projektnamespace des Clusters.

    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
    

Verfügbare Kubernetes-Versionen für einen Cluster auflisten

Sie können die verfügbaren Kubernetes-Versionen in Ihrer GDC-Zone auflisten, um die Kubernetes-Funktionen zu prüfen, auf die Sie im Cluster zugreifen können.

  • Listen Sie die verfügbaren Kubernetes-Versionen in Ihrer Zone auf:

    kubectl get userclustermetadata.upgrade.private.gdc.goog \
        -o=custom-columns=K8S-VERSION:.spec.kubernetesVersion \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ersetzen Sie MANAGEMENT_API_SERVER durch die kubeconfig-Datei des zonalen API-Servers Ihres Clusters.

    Die Ausgabe sieht dann ungefähr so aus:

    K8S-VERSION
    1.25.10-gke.2100
    1.26.5-gke.2100
    1.27.4-gke.500
    

Aktualisierbare Eigenschaften 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 Attribute ändern, die sich im spec der benutzerdefinierten Ressource Cluster befinden. Nicht alle Attribute in 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 das Symbol Bearbeiten.

API

  • Hier finden Sie die Liste der Eigenschaften für die Cluster-Spezifikation und die gültigen Werte für jede Eigenschaft:

    kubectl explain clusters.cluster.gdc.goog.spec \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Ersetzen Sie MANAGEMENT_API_SERVER durch den kubeconfig-Pfad des zonalen API-Servers.

    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-Konsole oder die kubectl-Befehlszeile. Sie können beispielsweise die Größe eines Knotenpools ändern.

Nächste Schritte