In diesem Dokument wird beschrieben, wie Sie einen Kubernetes-Standardcluster in einer GDC-Zone (Google Distributed Cloud) mit Air Gap erstellen. Ein Standardcluster ist ein Kubernetes-Cluster im Projektbereich, der hochgradig konfigurierbar ist und eine minimale Anzahl verwalteter Dienste enthält. Der Standardcluster bietet mehr Flexibilität bei der Dienstkonfiguration als der freigegebene Cluster, erfordert aber auch einen höheren Verwaltungsaufwand. Weitere Informationen zu Standardclustern finden Sie unter Kubernetes-Clusterkonfigurationen.
Standardcluster sind zonale Ressourcen und können nicht mehrere Zonen umfassen. Wenn Sie Cluster in einer Multizonen-Umgebung betreiben möchten, müssen Sie in jeder Zone manuell Cluster 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 Zielgruppen für die GDC-Dokumentation 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-Administrator der Organisation, Ihnen die folgenden Rollen zuzuweisen:
- Projekt-IAM-Administrator (
project-iam-admin): Gewähren Sie anderen Nutzern die erforderlichen Rollen für die Zugriffsverwaltung in Standardclustern. - Standardcluster-Administrator (
standard-cluster-admin): Erstellen Sie Standardcluster im Projekt.
Diese Rollen sind an Ihren Projekt-Namespace gebunden.
Umgebung vorbereiten
- Prüfen Sie, ob Sie die richtige Einrichtung haben, um auf Standardcluster zuzugreifen und sie zu verwalten. 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_SERVERauf den kubeconfig-Pfad fest. Weitere Informationen finden Sie unter Ressourcen des zonalen Verwaltungs-API-Servers. - Prüfen Sie die Cluster limits für Ressourcenüberlegungen.
Pod-CIDR-Block planen
Um den passenden Pod-CIDR-Block für Ihre Arbeitslasten zuzuweisen, 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 Standardmaximum 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 veranschaulicht, 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 muss, basierend auf der erforderlichen Anzahl von Knoten. Planen Sie beim Konfigurieren des CIDR-Bereichs zukünftige Knotenerweiterungen für den Cluster ein:
Total number of nodes supported = 2(Per node mask size - pod CIDR mask)
Da eine Standardmaskengröße pro Knoten von /24 vorhanden 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 der unterstützten Knoten einschließlich Knoten der Steuerungsebene nodes |
|---|---|---|
| /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 Clustererstellungsprozesses.
Standardcluster erstellen
Führen Sie die folgenden Schritte aus, um einen Standardcluster zu erstellen:
Console
Wählen Sie in der Projektauswahl Ihr Projekt aus.
Standardcluster sind Ressourcen im Projektbereich. Wenn Sie stattdessen eine Organisation auswählen, erstellen Sie einen freigegebenen Cluster, der im Bereich der Organisation liegt. Weitere Informationen finden Sie unter der Ressourcenhierarchie.
Wählen Sie im Navigationsmenü Kubernetes Engine > Cluster aus.
Klicken Sie auf Cluster erstellen.
Geben Sie im Feld Name einen Namen für den Cluster an.
Wählen Sie die Zone aus, in der der Cluster erstellt werden soll.
Wählen Sie die Kubernetes-Version für den Cluster aus.
Klicken Sie auf Weiter.
Konfigurieren Sie die Netzwerkeinstellungen für Ihren Cluster. Diese Netzwerkeinstellungen können nach dem Erstellen des Clusters nicht mehr geändert werden. Das Standard- und einzige unterstützte Internetprotokoll für Kubernetes-Cluster ist Internet Protocol Version 4 (IPv4).
Wenn Sie dedizierte Load-Balancer-Knoten erstellen möchten, geben Sie die Anzahl der zu erstellenden Knoten ein. Standardmäßig erhalten Sie keine Knoten und der Load-Balancer-Traffic wird über die Knoten der Steuerungsebene geleitet.
Wählen Sie den zu verwendenden Dienst-CIDR-Bereich (Classless Inter-Domain Routing) aus. Ihren bereitgestellten Diensten, z. B. Load-Balancern, werden IP-Adressen aus diesem Bereich zugewiesen.
Wählen Sie den zu verwendenden Pod-CIDR-Bereich aus. Der Cluster weist Ihren Pods und VMs IP-Adressen aus diesem Bereich zu.
Klicken Sie auf Weiter.
Prüfen Sie die Details des automatisch generierten Standardknotenpools für den Cluster. Klicken Sie auf edit Bearbeiten , um den Standardknotenpool zu ändern.
Wenn Sie zusätzliche Knotenpools erstellen möchten, wählen Sie Knotenpool hinzufügen aus. Beim Bearbeiten des Standardknotenpools oder Hinzufügen eines neuen Knotenpools können Sie ihn mit den folgenden Optionen anpassen:
- Weisen Sie dem Knotenpool einen Namen zu. Sie können den Namen nach dem Erstellen des Knotenpools nicht mehr ändern.
- Geben Sie die Anzahl der Worker-Knoten an, die im Knotenpool erstellt werden sollen.
Wählen Sie die Maschinenklasse aus, die Ihren Arbeitslastanforderungen am besten entspricht. Sehen Sie sich die Liste der folgenden Einstellungen an:
- Maschinentyp
- CPU
- Arbeitsspeicher
Klicken Sie auf Speichern.
Klicken Sie auf Erstellen , um den Cluster zu erstellen.
Die Erstellung eines Standardclusters kann bis zu 60 Minuten dauern.
API
Erstellen Sie eine benutzerdefinierte Ressource vom Typ
Clusterund 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: UNSPECIFIEDErsetzen Sie Folgendes:
CLUSTER_NAME: der Name des Clusters. Der Clustername darf nicht mit-systemenden. Das Suffix-systemist 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 nicht festgelegt, wird der Standardwert21verwendet.SERVICE_CIDR: die Größe der Netzwerkbereiche, aus denen virtuelle Dienst-IP-Adressen zugewiesen werden. Wenn nicht festgelegt, wird der Standardwert23verwendet.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 sehen, was konfiguriert werden kann.NODE_POOL_NAME: 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. Es 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.
Wenden Sie die benutzerdefinierte Ressource auf Ihre GDC-Instanz an:
kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVERErsetzen Sie
MANAGEMENT_API_SERVERdurch den kubeconfig-Pfad des zonalen API-Servers. Wenn Sie noch keine kubeconfig-Datei für den API-Server in der Zielzone generiert haben, lesen Sie den Abschnitt Anmelden.
Die Erstellung eines Standardclusters kann bis zu 60 Minuten dauern.
Terraform
Fügen Sie in eine 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 der Zielzone generiert haben, lesen Sie den Abschnitt Anmelden.CLUSTER_NAME: der Name des Clusters. Der Clustername darf nicht mit-systemenden. Das Suffix-systemist 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 nicht festgelegt, wird der Standardwert21verwendet.SERVICE_CIDR: die Größe der Netzwerkbereiche, aus denen virtuelle Dienst-IP-Adressen zugewiesen werden. Wenn nicht festgelegt, wird der Standardwert23verwendet.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 sehen, was konfiguriert werden kann.NODE_POOL_NAME: 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. Es 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.
Wenden Sie den neuen Standardcluster mit Terraform an:
terraform apply
Die Erstellung eines Standardclusters kann bis zu 60 Minuten dauern.
Nächste Schritte
- Zugriff auf Standardcluster verwalten
- HA-Containeranwendung bereitstellen
- Containerarbeitslasten in GDC
- Ressourcenhierarchie
- Cloud NAT für Standardcluster konfigurieren