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 projektbezogenen, hochgradig konfigurierbaren Kubernetes-Cluster, 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 zonale Ressourcen und können nicht mehrere Zonen umfassen. Wenn Sie Cluster in einem Universum mit mehreren Zonen 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.
Hinweise
Prüfen Sie, ob Sie die erforderliche Einrichtung haben, um auf Standardcluster zuzugreifen und sie zu verwalten. Weitere Informationen finden Sie unter Zugriff auf Standardcluster verwalten.
Bitten Sie den IAM-Administrator Ihrer Organisation, Ihnen die Rollen „Project IAM Admin“ (
project-iam-admin) und „Standard Cluster Admin“ (standard-cluster-admin) zuzuweisen, um die erforderlichen Berechtigungen zum Erstellen eines Standardclusters zu erhalten. Diese Rollen sind an Ihren Projekt-Namespace gebunden.Planen Sie die folgenden GDC-Limits (Google Distributed Cloud) für Kubernetes-Cluster mit Air Gap ein:
- 16 Cluster pro Organisation
- 42 Worker-Knoten pro Cluster und mindestens drei Worker-Knoten
- 4.620 Pods pro Cluster
- 110 Pods pro Knoten
Pod-CIDR-Block planen
Damit Sie den Pod-CIDR-Block in der richtigen Größe für Ihre Arbeitslasten zuweisen können, 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 CIDR-Block von
/24mit 256 Adressen zu. Diese Menge 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 die Standardgröße der Maske pro Knoten von /24 für 110 Pods berechnet wurde:
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 basierend auf der erforderlichen Anzahl von Knoten konfiguriert werden muss. Planen Sie beim Konfigurieren des CIDR-Bereichs zukünftige Knotenerweiterungen des Clusters ein:
Total number of nodes supported = 2(Per node mask size - pod CIDR mask)
Da die Maskengröße pro Knoten standardmäßig auf „/24“ festgelegt ist , finden Sie in der folgenden Tabelle die Zuordnung der Pod-CIDR-Maske zur Anzahl der unterstützten Knoten.
| Pod-CIDR-Maske | Berechnung: 2(Größe der Maske pro Knoten – CIDR-Maske) | Maximale Anzahl der unterstützten 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
Führen Sie die folgenden Schritte aus, um einen Standardcluster zu erstellen:
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_NAMEist der Name des Clusters. Der Clustername darf nicht mit-systemenden. Das Suffix-systemist für von GDC erstellte Cluster reserviert.PROJECT_NAME: der Name des Projekts, in dem der Cluster erstellt werden soll.POD_CIDR: Die Größe der Netzwerkbereiche, aus denen virtuelle IP-Adressen für Pods zugewiesen werden. Wenn kein Wert angegeben ist, wird der Standardwert21verwendet.SERVICE_CIDR: Die Größe der Netzwerkbereiche, aus denen virtuelle Dienst-IP-Adressen zugewiesen werden. Wenn kein Wert angegeben ist, 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 Sie konfigurieren 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. Hier finden Sie die verfügbaren Maschinentypen.NODE_POOL_NAMEist 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-Instance 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 Ihrer 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 Ihrer Zielzone generiert haben, lesen Sie den Abschnitt Anmelden.CLUSTER_NAMEist der Name des Clusters. Der Clustername darf nicht mit-systemenden. Das Suffix-systemist für von GDC erstellte Cluster reserviert.PROJECT_NAME: Der Name des Projekts, in dem der Cluster erstellt werden soll.POD_CIDR: Die Größe der Netzwerkbereiche, aus denen virtuelle IP-Adressen für Pods zugewiesen werden. Wenn kein Wert angegeben ist, wird der Standardwert21verwendet.SERVICE_CIDR: Die Größe der Netzwerkbereiche, aus denen virtuelle Dienst-IP-Adressen zugewiesen werden. Wenn kein Wert angegeben ist, 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 Sie konfigurieren 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. Hier finden Sie die verfügbaren Maschinentypen.NODE_POOL_NAMEist 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-Instance 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-Container-App bereitstellen
- Containerarbeitslasten in GDC
- Ressourcenhierarchie
- Cloud NAT für Standardcluster konfigurieren