Standardcluster zum Ausführen von Containerarbeitslasten erstellen

In diesem Dokument wird beschrieben, wie Sie einen Standard-Kubernetes-Cluster in einer GDC-Zone (Google Distributed Cloud) mit Air Gap erstellen. Ein Standardcluster bietet einen hochgradig konfigurierbaren Kubernetes-Cluster auf Projektebene, der eine minimale Anzahl von verwalteten Diensten enthält. Der Standardcluster bietet mehr Flexibilität bei der Dienstkonfiguration als der freigegebene Cluster, erfordert aber auch mehr Verwaltungsaufwand. Weitere Informationen zu Standardclustern finden Sie unter Kubernetes-Clusterkonfigurationen.

Standardcluster sind eine zonale Ressource und können sich nicht über mehrere Zonen erstrecken. Wenn Sie Cluster in einem Multi-Zonen-Universum betreiben möchten, müssen Sie Cluster in jeder Zone manuell erstellen.

Dieses Dokument richtet sich an Zielgruppen wie Anwendungsentwickler in der Gruppe der Anwendungsoperatoren, die für die Verwaltung von Containerarbeitslasten in ihrer Organisation verantwortlich sind. Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.

Hinweis

Wenn Sie einen Standardcluster erstellen möchten, fordern Sie die erforderlichen Berechtigungen an und bereiten Sie Ihre Umgebung vor.

IAM-Rollen anfordern

Bitten Sie Ihren IAM-Admin der Organisation, Ihnen die folgenden Rollen zuzuweisen:

  • IAM-Projektadministrator (project-iam-admin): Gewährt anderen Nutzern die erforderlichen Rollen zum Verwalten des Zugriffs in Standardclustern.
  • Standard-Cluster-Administrator (standard-cluster-admin): Erstellt Standardcluster im Projekt.

Diese Rollen sind an Ihren Projekt-Namespace gebunden.

Umgebung vorbereiten

  • Prüfen Sie, ob Sie die erforderliche Einrichtung für den Zugriff auf Standardcluster und deren Verwaltung haben. Weitere Informationen finden Sie unter Zugriff auf Standardcluster verwalten.
  • Generieren Sie die kubeconfig-Datei des zonalen API-Servers, um Ihren Cluster zu hosten. Legen Sie die Umgebungsvariable MANAGEMENT_API_SERVER auf den kubeconfig-Pfad fest. Weitere Informationen finden Sie unter Zonale API-Serverressourcen für die Verwaltung.
  • Prüfen Sie die Clusterlimits auf Ressourcenüberlegungen.

Pod-CIDR-Block planen

Wenn Sie den Pod-CIDR-Block in der richtigen Größe für Ihre Arbeitslasten zuweisen möchten, müssen Sie die Anzahl der IP-Adressen berechnen, die für Ihren Kubernetes-Cluster erforderlich sind, bevor Sie ihn erstellen. Die meisten Netzwerkparameter können nach dem Erstellen des Clusters nicht mehr geändert werden.

Ein Kubernetes-Cluster folgt bei der Zuweisung von IP-Adressen der folgenden Logik:

  • Kubernetes weist jedem Knoten einen /24-CIDR-Block mit 256 Adressen zu. Diese Anzahl entspricht dem standardmäßigen Maximum von 110 Pods pro Knoten für Kubernetes-Cluster.
  • Die Größe des CIDR-Blocks, der einem Knoten zugewiesen wird, hängt von der maximalen Anzahl von Pods pro Knoten ab.
  • Der Block enthält immer mindestens doppelt so viele Adressen wie die maximale Anzahl von Pods pro Knoten.

Im folgenden Beispiel wird gezeigt, wie der Standardwert von Maskengröße pro Knoten= /24 berechnet wurde, um 110 Pods aufzunehmen:

Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220

Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256

Bestimmen Sie die erforderliche Pod-CIDR-Maske, die für den Kubernetes-Cluster konfiguriert werden soll, basierend auf der erforderlichen Anzahl von Knoten. Planen Sie beim Konfigurieren des CIDR-Bereichs zukünftige Knotenergänzungen für den Cluster ein:

  Total number of nodes supported = 2(Per node mask size - pod CIDR mask)

Da die Standard-Maskengröße pro Knoten= /24 ist , finden Sie in der folgenden Tabelle die Zuordnung der Pod-CIDR-Maske zur Anzahl der unterstützten Knoten.

Pod-CIDR-Maske Berechnung: 2(Maskengröße pro Knoten – CIDR-Maske) Maximale Anzahl unterstützter Knoten, einschließlich Knoten der Steuerungsebene
/21 2(24 - 21) 8
/20 2(24-20) 16
/19 2(24 - 19) 32
/18 2(24 - 18) 64

Nachdem Sie den Pod-CIDR-Block für Ihren Kubernetes-Cluster berechnet haben, konfigurieren Sie ihn im nächsten Abschnitt im Rahmen des Workflows zur Clustererstellung.

Standardcluster erstellen

So erstellen Sie einen Standardcluster:

Console

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

    Standardcluster sind Ressourcen auf Projektebene. Wenn Sie stattdessen eine Organisation auswählen, erstellen Sie einen freigegebenen Cluster, der auf die Organisation beschränkt ist. Weitere Informationen finden Sie unter Ressourcenhierarchie.

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

  3. Klicken Sie auf Cluster erstellen.

  4. Geben Sie im Feld Name einen Namen für den Cluster ein.

  5. Wählen Sie die Zone aus, in der der Cluster erstellt werden soll.

  6. Wählen Sie die Kubernetes-Version für den Cluster aus.

  7. Klicken Sie auf Weiter.

  8. Konfigurieren Sie die Netzwerkeinstellungen für Ihren Cluster. Sie können diese Netzwerkeinstellungen nach dem Erstellen des Clusters nicht mehr ändern. Das standardmäßige und einzige unterstützte Internetprotokoll für Kubernetes-Cluster ist Internet Protocol Version 4 (IPv4).

    1. Wenn Sie dedizierte Load-Balancer-Knoten erstellen möchten, geben Sie die Anzahl der zu erstellenden Knoten ein. Standardmäßig erhalten Sie null Knoten und der Load-Balancer-Traffic wird über die Knoten der Steuerungsebene geleitet.

    2. Wählen Sie die zu verwendende Dienst-CIDR (Classless Inter-Domain Routing) aus. Ihren bereitgestellten Diensten wie Load Balancern werden IP-Adressen aus diesem Bereich zugewiesen.

    3. Wählen Sie den zu verwendenden Pod-CIDR aus. Der Cluster weist Ihren Pods und VMs IP-Adressen aus diesem Bereich zu.

    4. Klicken Sie auf Weiter.

  9. Prüfen Sie die Details des automatisch generierten Standardknotenpools für den Cluster. Klicken Sie auf Bearbeiten, um den Standardknotenpool zu ändern.

  10. Wenn Sie weitere Knotenpools erstellen möchten, wählen Sie Knotenpool hinzufügen aus. Wenn Sie den Standardknotenpool bearbeiten oder einen neuen Knotenpool hinzufügen, können Sie ihn mit den folgenden Optionen anpassen:

    1. Weisen Sie dem Knotenpool einen Namen zu. Sie können den Namen nicht mehr ändern, nachdem Sie den Knotenpool erstellt haben.
    2. Geben Sie die Anzahl der Worker-Knoten an, die im Knotenpool erstellt werden sollen.
    3. Wählen Sie die Maschinenklasse aus, die Ihren Arbeitslastanforderungen am besten entspricht. Sehen Sie sich die Liste der folgenden Einstellungen an:

      • Maschinentyp
      • CPU
      • Arbeitsspeicher
    4. Klicken Sie auf Speichern.

  11. Klicken Sie auf Erstellen, um den Cluster zu erstellen.

Die Erstellung eines Standardclusters kann bis zu 60 Minuten dauern.

API

  1. Erstellen Sie eine benutzerdefinierte Cluster-Ressource und speichern Sie sie als YAML-Datei, z. B. cluster.yaml:

    apiVersion: cluster.gdc.goog/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: PROJECT_NAME
    spec:
      clusterNetwork:
        podCIDRSize: POD_CIDR
        serviceCIDRSize: SERVICE_CIDR
      initialVersion:
        kubernetesVersion: KUBERNETES_VERSION
      nodePools:
      - machineTypeName: MACHINE_TYPE
        name: NODE_POOL_NAME
        nodeCount: NUMBER_OF_WORKER_NODES
        taints: TAINTS
        labels: LABELS
        acceleratorOptions:
          gpuPartitionScheme: GPU_PARTITION_SCHEME
      releaseChannel:
        channel: UNSPECIFIED
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME ist der Name des Clusters. Der Clustername darf nicht mit -system enden. Das Suffix -system ist für Cluster reserviert, die von GDC erstellt wurden.
    • PROJECT_NAME: der Name des Projekts, in dem der Cluster erstellt werden soll.
    • POD_CIDR: die Größe der Netzwerkbereiche, aus denen virtuelle Pod-IP-Adressen zugewiesen werden. Wenn keine Angabe gemacht wird, wird der Standardwert 21 verwendet.
    • SERVICE_CIDR: die Größe der Netzwerkbereiche, aus denen virtuelle Dienst-IP-Adressen zugewiesen werden. Wenn keine Angabe gemacht wird, wird der Standardwert 23 verwendet.
    • KUBERNETES_VERSION: die Kubernetes-Version des Clusters, z. B. 1.26.5-gke.2100. Eine Liste der verfügbaren Kubernetes-Versionen, die konfiguriert werden können, finden Sie unter Verfügbare Kubernetes-Versionen für einen Cluster auflisten.
    • MACHINE_TYPE: der Maschinentyp für die Worker-Knoten des Knotenpools. Sehen Sie sich die verfügbaren Maschinentypen an, um zu erfahren, was konfiguriert werden kann.
    • NODE_POOL_NAME ist der Name des Knotenpools.
    • NUMBER_OF_WORKER_NODES: die Anzahl der Worker-Knoten, die im Knotenpool bereitgestellt werden sollen.
    • TAINTS: Die Markierungen, die auf die Knoten dieses Knotenpools angewendet werden sollen. Dieses Feld ist optional.
    • LABELS: die Labels, die auf die Knoten dieses Knotenpools angewendet werden sollen. Sie enthält eine Liste von Schlüssel/Wert-Paaren. Dieses Feld ist optional.
    • GPU_PARTITION_SCHEME: das GPU-Partitionierungsschema, wenn Sie GPU-Arbeitslasten ausführen. Dieses Feld ist optional. Beispiel: mixed-2. Die GPU wird nicht partitioniert, wenn dieses Feld nicht festgelegt ist. Weitere Informationen zu verfügbaren MIG-Profilen (Multi-Instanz-GPU) finden Sie unter Unterstützte MIG-Profile.
  2. Wenden Sie die benutzerdefinierte Ressource auf Ihre GDC-Instanz an:

    kubectl apply -f cluster.yaml --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 den Abschnitt Anmelden.

Die Erstellung eines Standardclusters kann bis zu 60 Minuten dauern.

Terraform

  1. Fügen Sie in einer Terraform-Konfigurationsdatei das folgende Code-Snippet ein:

    provider "kubernetes" {
      config_path = "MANAGEMENT_API_SERVER"
    }
    
    resource "kubernetes_manifest" "cluster-create" {
      manifest = {
        "apiVersion" = "cluster.gdc.goog/v1"
        "kind" = "Cluster"
        "metadata" = {
          "name" = "CLUSTER_NAME"
          "namespace" = "PROJECT_NAME"
        }
        "spec" = {
          "clusterNetwork" = {
            "podCIDRSize" = "POD_CIDR"
            "serviceCIDRSize" = "SERVICE_CIDR"
          }
          "initialVersion" = {
            "kubernetesVersion" = "KUBERNETES_VERSION"
          }
          "nodePools" = [{
            "machineTypeName" = "MACHINE_TYPE"
            "name" = "NODE_POOL_NAME"
            "nodeCount" = "NUMBER_OF_WORKER_NODES"
            "taints" = "TAINTS"
            "labels" = "LABELS"
            "acceleratorOptions" = {
              "gpuPartitionScheme" = "GPU_PARTITION_SCHEME"
            }
          }]
          "releaseChannel" = {
            "channel" = "UNSPECIFIED"
          }
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • MANAGEMENT_API_SERVER: der kubeconfig-Pfad des zonalen API-Servers. Wenn Sie noch keine kubeconfig-Datei für den API-Server in Ihrer Zielzone generiert haben, lesen Sie den Abschnitt Anmelden.
    • CLUSTER_NAME ist der Name des Clusters. Der Clustername darf nicht mit -system enden. Das Suffix -system ist für Cluster reserviert, die von GDC erstellt wurden.
    • PROJECT_NAME: der Name des Projekts, in dem der Cluster erstellt werden soll.
    • POD_CIDR: die Größe der Netzwerkbereiche, aus denen virtuelle Pod-IP-Adressen zugewiesen werden. Wenn keine Angabe gemacht wird, wird der Standardwert 21 verwendet.
    • SERVICE_CIDR: die Größe der Netzwerkbereiche, aus denen virtuelle Dienst-IP-Adressen zugewiesen werden. Wenn keine Angabe gemacht wird, wird der Standardwert 23 verwendet.
    • KUBERNETES_VERSION: die Kubernetes-Version des Clusters, z. B. 1.26.5-gke.2100. Eine Liste der verfügbaren Kubernetes-Versionen, die konfiguriert werden können, finden Sie unter Verfügbare Kubernetes-Versionen für einen Cluster auflisten.
    • MACHINE_TYPE: der Maschinentyp für die Worker-Knoten des Knotenpools. Sehen Sie sich die verfügbaren Maschinentypen an, um zu erfahren, was konfiguriert werden kann.
    • NODE_POOL_NAME ist der Name des Knotenpools.
    • NUMBER_OF_WORKER_NODES: die Anzahl der Worker-Knoten, die im Knotenpool bereitgestellt werden sollen.
    • TAINTS: Die Markierungen, die auf die Knoten dieses Knotenpools angewendet werden sollen. Dieses Feld ist optional.
    • LABELS: die Labels, die auf die Knoten dieses Knotenpools angewendet werden sollen. Sie enthält eine Liste von Schlüssel/Wert-Paaren. Dieses Feld ist optional.
    • GPU_PARTITION_SCHEME: das GPU-Partitionierungsschema, wenn Sie GPU-Arbeitslasten ausführen. Dieses Feld ist optional. Beispiel: mixed-2. Die GPU wird nicht partitioniert, wenn dieses Feld nicht festgelegt ist. Weitere Informationen zu verfügbaren MIG-Profilen (Multi-Instanz-GPU) finden Sie unter Unterstützte MIG-Profile.
  2. Wenden Sie den neuen Standardcluster mit Terraform an:

    terraform apply
    

Die Erstellung eines Standardclusters kann bis zu 60 Minuten dauern.

Nächste Schritte