Sie können den Aufwand für die manuelle Infrastrukturverwaltung in GKE-Standardclustern (Google Kubernetes Engine) reduzieren, indem Sie GKE Knotenpools für ausstehende Pods automatisch erstellen lassen. In diesem Dokument erfahren Sie, wie Sie die automatische Erstellung von Knotenpools für Cluster und Arbeitslasten aktivieren, Standardwerte für automatisch erstellte Knoten festlegen und die automatische Erstellung für einige gängige Anwendungsfälle auslösen.
Dieses Dokument richtet sich an Clusteradministratoren, ‑operatoren und ‑entwickler, die die Infrastruktur in Standardclustern verwalten und Arbeitslasten in Standardclustern bereitstellen. Weitere Informationen zur automatischen Erstellung von Knotenpools und zu den verschiedenen Aktivierungsmethoden (z. B. ComputeClasses und automatische Knotenbereitstellung auf Clusterebene) finden Sie unter Automatische Erstellung von Knotenpools.
Beschränkungen
Für die automatische Erstellung von Knotenpools gelten die folgenden Einschränkungen:
- Alle Einschränkungen des Cluster Autoscaler gelten auch für die automatische Erstellung von Knotenpools.
- Bei Clustern mit mehr als 200 Knotenpools kann es beim Autoscaling zu einer erhöhten Latenz kommen. Jede Konfiguration, die die Erstellung eines neuen Knotenpools auslöst, z. B. die Trennung von Arbeitslasten oder die Verwendung mehrerer Compute-Klassen, erhöht diese Zahl. Weitere Informationen zu Clusterlimits finden Sie unter Limits und Best Practices im Abschnitt „Große Cluster planen“.
- Alle Ressourcenlimits, die Sie für den Cluster festlegen, wenn Sie die automatische Knotenbereitstellung aktivieren, gelten auch für die Knotenpools, die GKE für ComputeClasses erstellt.
- Die folgenden Einstellungen werden von ComputeClasses nicht unterstützt:
- Surge-Upgrades oder Blau/Grün-Upgrades.
- Knotenintegrität und Secure Boot.
- Wenn Sie die automatische Erstellung von Knotenpools für eine ComputeClass in GKE-Versionen vor 1.33.3-gke.1136000 aktivieren möchten, müssen Sie auch die automatische Knotenbereitstellung auf Clusterebene aktivieren. Diese Einschränkung gilt nicht für GKE-Versionen ab 1.33.3-gke.1136000.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components update
ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
Voraussetzungen
Mit der automatischen Knotenbereitstellung können Sie die automatische Erstellung von Knotenpools für Ihren gesamten Cluster in jeder GKE-Version aktivieren. Wenn Sie eine ComputeClass verwenden möchten, um das automatische Erstellen von Knotenpools auf Arbeitslastebene zu aktivieren, und Sie die automatische Knotenbereitstellung nicht aktivieren möchten, muss Ihr Cluster die folgenden Anforderungen erfüllen:
- Verwenden Sie die GKE-Version 1.33.3-gke.1136000 oder höher.
- Verwenden Sie den Rapid Release Channel.
Damit die automatische Erstellung von Knotenpools für bestimmte Knotenkonfigurationen ausgelöst wird, müssen Sie die entsprechenden Versionsanforderungen erfüllen. Weitere Informationen zur Versionsunterstützung für verschiedene Konfigurationen finden Sie in den GKE-Versionshinweisen (neue Funktionen) oder in der Dokumentation für Ihren Anwendungsfall.
Automatisches Erstellen auf Arbeitslastebene aktivieren
Sie können die automatische Erstellung von Knotenpools für bestimmte Arbeitslasten im Cluster mithilfe einer ComputeClass aktivieren. Mit dem Feld nodePoolAutoCreation
in einer ComputeClass-Spezifikation wird gesteuert, ob GKE neue Knotenpools für Pods erstellen kann, die diese ComputeClass auswählen. In GKE-Version 1.33.3-gke.1136000 und höher können Sie die automatische Erstellung von Knotenpools für eine ComputeClass aktivieren, auch wenn die automatische Knotenbereitstellung für den Cluster nicht aktiviert ist.
In Versionen vor 1.33.3-gke.1136000 müssen Sie auch die automatische Knotenbereitstellung auf Clusterebene aktivieren.
So aktivieren Sie die automatische Erstellung von Knotenpools für eine ComputeClass:
Verwenden Sie einen neuen oder vorhandenen Standardcluster, der die folgenden Anforderungen erfüllt:
- Verwendet GKE-Version 1.33.3-gke.1136000 oder höher.
- Verwendet den Rapid Release Channel.
Optional können Sie einen neuen Standardcluster erstellen.
Wenn Ihr Cluster die Anforderungen im vorherigen Schritt nicht erfüllt, aktivieren Sie die automatische Knotenbereitstellung auf Clusterebene.
Speichern Sie die folgende Beispiel-ComputeClass als YAML-Datei:
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n2 whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie
COMPUTE_CLASS
durch einen Namen für die neue Compute-Klasse. Weitere Informationen zu den verfügbaren Feldern in ComputeClasses finden Sie in der CustomResourceDefinition für ComputeClass.Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.Speichern Sie das folgende Beispiel-Deployment, in dem eine ComputeClass ausgewählt wird, als
helloweb-deploy.yaml
:Erstellen Sie das Deployment im Cluster:
kubectl apply -f helloweb-deploy.yaml
So prüfen Sie, ob GKE einen neuen Knotenpool für Ihren Pod erstellt hat:
gcloud container node-pools list \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
Ersetzen Sie Folgendes:
CLUSTER_NAME
: Der Name Ihres Clusters.CONTROL_PLANE_LOCATION
: Die Region oder Zone der Clustersteuerungsebene, z. B.us-central1
oderus-central1-a
.
Automatische Knotenbereitstellung auf Clusterebene aktivieren
Wenn Sie die automatische Erstellung von Knotenpools für Ihren gesamten GKE-Cluster aktivieren möchten, verwenden Sie die Einstellung automatische Knotenbereitstellung. Mit der automatischen Knotenbereitstellung kann GKE neue Knotenpools für ausstehende Arbeitslasten im gesamten Cluster basierend auf der Konfiguration in der Pod-Spezifikation oder in einer ComputeClass erstellen. Sie können die automatische Knotenbereitstellung für neue oder vorhandene Cluster aktivieren.
Bevor Sie die automatische Knotenbereitstellung aktivieren, sollten Sie die Größe des primären IPv4-Adressbereichs Ihres VPC-Subnetzes planen. GKE verwendet diesen IP-Adressbereich als primären IP-Adressbereich für Knoten. Je nach Größe und Umfang Ihres Clusters enthält der Standard-IP-Adressbereich für Knoten möglicherweise nicht genügend IP-Adressen, um neuen Knoten zugewiesen zu werden. Wenn Sie die Größe des IP-Adressbereichs für Knoten nach dem Erstellen des Clusters aktualisieren, müssen Sie die GKE-Cluster-Firewallregeln aktualisieren, um Traffic von den neuen IP-Adressen zuzulassen.
Wenn Sie automatisch erstellte Knotenpools in GKE-Versionen vor 1.33.3-gke.1136000 verwenden möchten, müssen Sie die Schritte in diesem Abschnitt ausführen. Sie können die automatische Knotenbereitstellung auch für einen vorhandenen Cluster aktivieren, indem Sie die Clusterkonfiguration in der Google Cloud -Konsole bearbeiten.
Wenn Sie die automatische Knotenbereitstellung beim Erstellen eines neuen Clusters aktivieren möchten, wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster erstellen auf.
Geben Sie auf der Seite Clustergrundlagen einen Namen und einen Standort für den neuen Cluster an.
Klicken Sie im Navigationsmenü auf Automatisierung.
Klicken Sie auf das Kästchen Automatische Knotenbereitstellung aktivieren. Der Abschnitt Einschränkungen wird angezeigt.
Geben Sie Limits für CPU und Arbeitsspeicher an.
Klicken Sie auf Änderungen speichern.
gcloud
gcloud container clusters create CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--min-cpu=MINIMUM_CPU \
--min-memory=MINIMUM_MEMORY \
--max-cpu=MAXIMUM_CPU \
--max-memory=MAXIMUM_MEMORY \
--autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Ersetzen Sie Folgendes:
CLUSTER_NAME
: der Name des Clusters zum Aktivieren der automatischen KnotenbereitstellungCONTROL_PLANE_LOCATION
: Die Region oder Zone der Clustersteuerungsebene, z. B.us-central1
oderus-central1-a
.MINIMUM_CPU
: die Mindestanzahl von Kernen im ClusterMINIMUM_MEMORY
: die minimale Speicherkapazität im Cluster in GiB.MAXIMUM_CPU
: die maximale Anzahl der Kerne im Cluster Dieses Limit gilt für die Summe der CPU-Kerne aller neuen und vorhandenen Knoten im Cluster, einschließlich manuell erstellter Knotenpools.MAXIMUM_MEMORY
: die maximale Speicherkapazität in GiB im Cluster. Dieses Limit gilt für die Summe der Speicherkapazität aller neuen und vorhandenen Knotenpools im Cluster, einschließlich manuell erstellter Knotenpools.
Einstellungen mit einer Konfigurationsdatei für die automatische Knotenbereitstellung konfigurieren
Sie können Ressourcenlimits und Knotenkonfigurationseinstellungen für die automatische Knotenbereitstellung mit einer YAML-Konfigurationsdatei konfigurieren. Mit der Konfigurationsdatei können Sie deklarativ Standardwerte für automatisch erstellte Knotenpools angeben und erweiterte Konfigurationen vornehmen, z. B. die automatische Knotenreparatur aktivieren. Diese Datei hat nichts mit ComputeClasses zu tun, die benutzerdefinierte Kubernetes-Ressourcen sind. Stattdessen ist die Konfigurationsdatei eine erweiterbare Alternative zur Verwendung von Befehlszeilen-Flags zum Angeben von Einstellungen für die automatische Knotenbereitstellung. Weitere Informationen finden Sie unter Standardeinstellungen auf Clusterebene mit einer Konfigurationsdatei.
So erstellen und verwenden Sie eine Konfigurationsdatei:
- Erstellen Sie in einem Texteditor eine YAML-Datei in einem Pfad, auf den die Google Cloud CLI zugreifen kann.
Fügen Sie die Konfigurationen hinzu, die Sie festlegen oder ändern möchten, wie im folgenden Beispiel:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
In diesem Beispiel sind die folgenden Einstellungen für die automatische Knotenbereitstellung festgelegt:
resourceLimits
: Legt Ressourcenlimits für CPU, Arbeitsspeicherkapazität und NVIDIA T4-GPUs im Cluster fest. Diese Limits gelten für die Summe der Ressourcenkapazität im Cluster, einschließlich manuell erstellter Knotenpools.management
: Aktiviert die automatische Knotenreparatur und das automatische Knotenupgrade für alle neuen automatisch erstellten Knotenpools im Cluster.shieldedInstanceConfig
: Aktiviert Secure Boot und Knotenintegritätsmonitoring für alle neuen automatisch erstellten Knotenpools im Cluster.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Nachdem Sie die Konfigurationsdatei auf den Cluster angewendet haben, verwendet GKE die Einstellungen in der Datei für neue automatisch erstellte Knotenpools im Cluster. Diese Einstellungen gelten nicht für vorhandene Knotenpools, die von GKE im Cluster erstellt wurden.
Ressourcenlimits für die automatische Knotenbereitstellung konfigurieren
Wenn Sie die automatische Knotenbereitstellung auf Clusterebene verwenden, müssen Sie Limits für die Gesamtmenge an Ressourcen konfigurieren, die Ihr Cluster in allen Knotenpools haben kann. Wenn Sie die automatische Knotenbereitstellung für einen Cluster aktivieren möchten, müssen Sie Grenzwerte für die CPU- und Arbeitsspeicherkapazität im Cluster angeben. Wenn Sie andere Arten von angehängten Ressourcen wie GPUs und TPUs verwenden möchten, müssen Sie außerdem Limits für diese Ressourcen angeben. Diese Limits sind nur erforderlich, wenn Sie die Einstellung für die automatische Knotenbereitstellung für Ihren Cluster aktivieren. Wenn Sie nur Compute-Klassen verwenden, um automatisch erstellte Knotenpools zu erhalten, müssen Sie keine Ressourcenlimits konfigurieren.
Sie können Ressourcenlimits für die automatische Erstellung von Knotenpools mit einer der folgenden Methoden hinzufügen oder ändern:
- Die Google Cloud Console
- gcloud CLI-Flags
- Konfigurationsdatei auf Clusterebene
Wählen Sie eine der folgenden Optionen aus, um Ressourcenlimits für einen vorhandenen Cluster zu konfigurieren:
Console
Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf.
Klicken Sie auf den Namen des Clusters. Die Seite Clusterdetails wird geöffnet.
Klicken Sie auf den Tab Details.
Klicken Sie im Abschnitt Automatisierung in der Zeile Automatische Knotenbereitstellung auf
Bearbeiten. Der Bereich Automatische Knotenbereitstellung bearbeiten wird geöffnet.Klicken Sie auf das Kästchen Automatische Knotenbereitstellung aktivieren.
Geben Sie im Bereich Limits Mindest- und Höchstwerte für die CPU- und Speicherkapazität im Cluster an.
So konfigurieren Sie Limits für eine andere Ressource wie GPUs oder TPUs:
- Klicken Sie auf Ressource hinzufügen.
- Wählen Sie in der Drop-down-Liste Ressourcentyp das GPU-Modell oder den TPU-Maschinentyp aus, z. B. NVIDIA A100 80 GB oder ct5p.
- Geben Sie Mindest- und Höchstwerte für die Ressource an.
Optional: Wählen Sie im Abschnitt Knotenpool-Standorte bestimmte Zonen aus, in denen GKE Knoten erstellen soll. Wenn Sie beispielsweise GPU-Arbeitslasten ausführen möchten, wählen Sie Zonen aus, die eine hohe Verfügbarkeit für den ausgewählten GPU-Typ bieten.
Klicken Sie auf Änderungen speichern.
gcloud
Führen Sie einen der folgenden Befehle aus:
Geben Sie CPU- und Arbeitsspeicherressourcenlimits an:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY
Ersetzen Sie Folgendes:
MINIMUM_CPU
: die Mindestanzahl von Kernen im ClusterMINIMUM_MEMORY
: die minimale Speicherkapazität im Cluster in GiB.MAXIMUM_CPU
: die maximale Anzahl der Kerne im Cluster Dieses Limit gilt für die Summe der CPU-Kerne in allen Knotenpools im Cluster, einschließlich manuell erstellter Knotenpools.MAXIMUM_MEMORY
: die maximale Speicherkapazität in GiB im Cluster. Dieses Limit gilt für die Summe der Arbeitsspeicherkapazität aller Knotenpools im Cluster, einschließlich manuell erstellter Knotenpools.
GPU-Ressourcenlimits angeben:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=GPU_TYPE,count=MINIMUM_GPU_COUNT \ --max-accelerator=type=GPU_TYPE,count=MAXIMUM_GPU_COUNT
Ersetzen Sie Folgendes:
GPU_TYPE
: Der GPU-Typ, für den ein Limit festgelegt werden soll, z. B.nvidia-l4
.MINIMUM_GPU_COUNT
: die Mindestanzahl von GPUs des angegebenen Typs, die der Cluster haben kann.MAXIMUM_GPU_COUNT
: die maximale Anzahl von GPUs des angegebenen Typs, die der Cluster haben kann.
TPU-Ressourcenlimits angeben:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --min-cpu=MINIMUM_CPU \ --min-memory=MINIMUM_MEMORY \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY \ --min-accelerator=type=TPU_TYPE,count=MINIMUM_TPU_COUNT \ --max-accelerator=type=TPU_TYPE,count=MAXIMUM_TPU_COUNT
Ersetzen Sie Folgendes:
TPU_TYPE
: Der TPU-Typ, für den ein Limit festgelegt werden soll. Die folgenden Werte werden unterstützt:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e mit Maschinentypen, die mitct5lp-
beginnen.tpu-v5p-slice
: TPU v5e mit Maschinentypen, die mitct5p-
beginnen.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU_COUNT
: die Mindestanzahl von TPU-Chips des angegebenen Typs, die der Cluster haben kann. Wenn der angegebene Wert größer als die Anzahl der TPU-Chips in einem TPU-Slice mit mehreren Hosts ist, wird Ihr TPU-Slice möglicherweise nicht herunterskaliert.MAXIMUM_TPU_COUNT
: die maximale Anzahl von TPU-Chips des angegebenen Typs, die der Cluster haben kann. Geben Sie für TPU-Slices mit mehreren Hosts einen Wert an, der größer als die Anzahl der Chips in jedem Slice ist, damit GKE den Slice atomar skalieren kann. Die Anzahl der Chips in einem Slice ist das Produkt der TPU-Topologie. Wenn die Topologie beispielsweise2x2x2
ist, beträgt die Anzahl der Chips im Slice8
. Das bedeutet, dass der Wert von MAXIMUM_TPU_COUNT größer als8
sein muss.
Konfigurationsdatei
Geben Sie in Ihrer Konfigurationsdatei einen der folgenden Feldgruppen im Feld
resourceLimits
an:Geben Sie CPU- und Arbeitsspeicherressourcenlimits an:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY
Ersetzen Sie Folgendes:
MINIMUM_CPU
: die Mindestanzahl von Kernen im ClusterMINIMUM_MEMORY
: die minimale Speicherkapazität im Cluster in GiB.MAXIMUM_CPU
: die maximale Anzahl der Kerne im Cluster Dieses Limit gilt für die Summe der CPU-Kerne in allen Knotenpools im Cluster, einschließlich manuell erstellter Knotenpools.MAXIMUM_MEMORY
: die maximale Speicherkapazität in GiB im Cluster. Dieses Limit gilt für die Summe der Arbeitsspeicherkapazität aller Knotenpools im Cluster, einschließlich manuell erstellter Knotenpools.
GPU-Ressourcenlimits angeben:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'GPU1_TYPE' minimum: MINIMUM_GPU1_COUNT maximum: MAXIMUM_GPU1_COUNT - resourceType: 'GPU2_TYPE' minimum: MINIMUM_GPU2_COUNT maximum: MAXIMUM_GPU2_COUNT
Ersetzen Sie Folgendes:
GPU1_TYPE
,GPU2_TYPE
: die GPU-Typen, für die Limits festgelegt werden sollen, z. B.nvidia-l4
.MINIMUM_GPU1_COUNT
,MINIMUM_GPU2_COUNT
: die Mindestanzahl von GPUs der angegebenen Typen, die der Cluster haben kann.MAXIMUM_GPU1_COUNT
,MAXIMUM_GPU2_COUNT
: Die maximale Anzahl von GPUs der angegebenen Typen, die der Cluster haben kann.
TPU-Ressourcenlimits angeben:
resourceLimits: - resourceType: 'cpu' minimum: MINIMUM_CPU maximum: MAXIMUM_CPU - resourceType: 'memory' minimum: MINIMUM_MEMORY maximum: MAXIMUM_MEMORY - resourceType: 'TPU1_TYPE' minimum: MINIMUM_TPU1_COUNT maximum: MAXIMUM_TPU1_COUNT - resourceType: 'TPU2_TYPE' minimum: MINIMUM_TPU2_COUNT maximum: MAXIMUM_TPU2_COUNT
Ersetzen Sie Folgendes:
TPU1_TYPE
,TPU2_TYPE
: Die TPU-Typen, für die Limits festgelegt werden sollen. Folgende Werte werden unterstützt:tpu-v4-podslice
: TPU v4.tpu-v5-lite-podslice
: TPU v5e mit Maschinentypen, die mitct5lp-
beginnen.tpu-v5p-slice
: TPU v5e mit Maschinentypen, die mitct5p-
beginnen.tpu-v6e-slice
: TPU Trillium.
MINIMUM_TPU1_COUNT
,MINIMUM_TPU2_COUNT
: Die Mindestanzahl von TPU-Chips des angegebenen Typs, die der Cluster haben kann. Wenn der angegebene Wert größer als die Anzahl der TPU-Chips in einem TPU-Slice mit mehreren Hosts ist, wird Ihr TPU-Slice möglicherweise nicht herunterskaliert.MAXIMUM_TPU1_COUNT
,MAXIMUM_TPU2_COUNT
: Die maximale Anzahl von TPU-Chips des angegebenen Typs, die der Cluster haben kann. Geben Sie für Multi-Host-TPU-Slices einen Wert an, der größer als die Anzahl der Chips in jedem Slice ist, damit GKE den Slice atomar skalieren kann. Die Anzahl der Chips in einem Slice ist das Produkt der TPU-Topologie. Wenn die Topologie fürTPU1_TYPE
beispielsweise2x2x2
ist, beträgt die Anzahl der Chips im Slice8
. Das bedeutet, dass der Wert vonMAXIMUM_TPU1_COUNT
größer als8
sein muss.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Vorhandene Knotenpools als automatisch erstellt markieren
Nachdem Sie die automatische Knotenbereitstellung auf Clusterebene aktiviert haben, können Sie alle vorhandenen Knotenpools im Cluster als automatisch erstellt markieren. GKE verwaltet die Skalierung in diesen Knotenpools, einschließlich des Löschens der Knotenpools, wenn sie leer sind. Sie können manuell erstellte Knotenpools als automatisch erstellt markieren, damit GKE die Knotenpools für Sie verwaltet.
Wenn Sie die automatische Bereitstellung für Ihren Cluster deaktivieren, verwaltet GKE alle vorhandenen automatisch erstellten Knotenpools im Cluster nicht mehr. Wenn Sie die automatische Bereitstellung für den Cluster später wieder aktivieren, setzt GKE die Verwaltung dieser vorhandenen Knotenpools nicht automatisch fort. Sie müssen diese vorhandenen Knotenpools als automatisch erstellt markieren.
Führen Sie den folgenden Befehl aus, um einen vorhandenen Knotenpool als automatisch erstellt zu kennzeichnen:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning
Ersetzen Sie NODE_POOL_NAME
durch den Namen des Knotenpools.
Standardeinstellungen für automatisch erstellte Knotenpools konfigurieren
GKE verwendet Ihre Compute-Klassen und Pod-Spezifikationen, um die Knotentypen zu bestimmen, auf denen Ihre ausstehenden Pods optimal ausgeführt werden können. Optional können Sie Standardeinstellungen konfigurieren, die GKE auf automatisch erstellte Knotenpools anwendet, z. B. ein benutzerdefiniertes IAM-Dienstkonto (Identity and Access Management) für die Knoten oder benutzerdefinierte Konfigurationen für Bootlaufwerke. Diese Standardeinstellungen überschreiben alle entsprechenden Standardwerte, die Google für Ihre Cluster festlegt. Sie können beispielsweise ein Ubuntu-Knoten-Image als Standard für automatisch erstellte Knotenpools festlegen. Dadurch wird das standardmäßige Container-Optimized OS-Knoten-Image von GKE überschrieben.
Sie können Standardeinstellungen auf Clusterebene mit der automatischen Knotenbereitstellung oder auf Arbeitslastebene in ComputeClasses konfigurieren. Bevor Sie eine Einstellung auf einer dieser Ebenen konfigurieren, sollten Sie Folgendes berücksichtigen:
- Die Einstellungen auf Clusterebene gelten für alle automatisch erstellten Knotenpools im Cluster. Die ComputeClass-Einstellungen gelten nur für Arbeitslasten, die diese ComputeClass verwenden.
- Wenn Sie dieselbe Standardeinstellung in einer ComputeClass und auf Clusterebene angeben, verwendet GKE die ComputeClass-Einstellung für Arbeitslasten, die die ComputeClass verwenden.
- Alle Standardwerte, die Sie konfigurieren, gelten nur für neue automatisch erstellte Knotenpools. Vorhandene Knotenpools sind davon nicht betroffen.
In den folgenden Abschnitten erfahren Sie, wie Sie bestimmte Standardeinstellungen konfigurieren.
Standardknoten-Image festlegen
Wählen Sie eine der folgenden Optionen aus:
ComputeClass
Verwenden Sie in einem ComputeClass-Manifest das Feld
nodePoolConfig.imageType
. Dieses Feld ist in der GKE-Version 1.32.4-gke.1198000 und höher verfügbar.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: imageType: IMAGE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie
IMAGE_TYPE
durch einen Wert für das Knoten-Image, der einer der folgenden sein kann:cos_containerd
: Container-Optimized OS mit containerd.ubuntu_containerd
: Ubuntu mit containerd.
Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
gcloud
Verwenden Sie das Flag --autoprovisioning-image-type
, um das Standardknoten-Image über die Befehlszeile festzulegen:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-image-type=IMAGE_TYPE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.IMAGE_TYPE
: Das Knoten-Image. Dies kann einer der folgenden Werte sein:cos_containerd
: Container-Optimized OS mit containerd.ubuntu_containerd
: Ubuntu mit containerd.
So legen Sie das Standardknoten-Image in einer Konfigurationsdatei fest:
Geben Sie in der Konfigurationsdatei das Feld
imageType
an:imageType: 'IMAGE_TYPE'
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Standard-IAM-Dienstkonto für Knoten festlegen
GKE-Knoten verwenden ein IAM-Dienstkonto für Systemaufgaben wie Logging und Monitoring. Wenn Sie das IAM-Dienstkonto für automatisch erstellte Knotenpools ändern möchten, wählen Sie eine der folgenden Optionen aus:
ComputeClass
Verwenden Sie in einem Computeclass-Manifest das Feld
nodePoolConfig.serviceAccount
. Dieses Feld ist in der GKE-Version 1.31.4-gke.1072000 und höher verfügbar.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 - machineFamily: n4d nodePoolConfig: serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_NAME
: Der Name des IAM-Dienstkontos, z. B.my-node-account
.PROJECT_ID
: die Projekt-ID des Dienstkontoprojekts.
Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
gcloud
Wenn Sie die gcloud CLI verwenden, um ein Standarddienstkonto für automatisch erstellte Knotenpools zu konfigurieren, müssen Sie auch Zugriffsbereiche angeben, die für die korrekte Funktion der Knotenpools erforderlich sind.
Wenn Sie das Standarddienstkonto und die Zugriffsbereiche über die Befehlszeile festlegen möchten, verwenden Sie die Flags --autoprovisioning-service-account
und --autoprovisioning-scopes
:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
--autoprovisioning-scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
Ersetzen Sie Folgendes:
SERVICE_ACCOUNT_NAME
: Der Name des IAM-Dienstkontos, z. B.my-node-account
.PROJECT_ID
: die Projekt-ID des Dienstkontoprojekts.
So legen Sie das Standarddienstkonto und die Zugriffsbereiche in einer Konfigurationsdatei fest:
Geben Sie in der Konfigurationsdatei die Felder
serviceAccount
undscopes
an:serviceAccount: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com scopes: https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/trace.append
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Standardzonen für automatisch erstellte Knoten festlegen
Standardmäßig werden in GKE Knoten in den folgenden Zonen automatisch erstellt, je nach Clustertyp:
- Regionale Cluster: GKE erstellt Knoten in drei zufälligen Zonen in der Clusterregion.
- Zonale Cluster: GKE erstellt Knoten in derselben Zone wie die Steuerungsebene des Clusters.
Sie können manuell eine Liste von Zonen angeben, in denen GKE automatisch Knoten erstellt. Diese Zonen müssen sich in derselben Region wie die Steuerungsebene des Clusters befinden. Wenn Sie beispielsweise einen zonalen Cluster mit der Steuerungsebene in us-central1-a
haben, können Sie beliebige Zonen in der Region us-central1
angeben, damit GKE automatisch Knoten erstellt. Wenn Sie die Standardzonen für automatisch erstellte Knoten in einem vorhandenen Cluster ändern, gelten die Änderungen nur für neue Knotenpools, die von GKE erstellt werden.
Wählen Sie eine der folgenden Optionen aus, um die Standardzonen für automatisch erstellte Knoten anzugeben:
ComputeClass
Verwenden Sie in einem ComputeClass-Manifest das Feld
spec.priorityDefaults.location.zones
. Dieses Feld ist in der GKE-Version 1.33.1-gke.1545000 und höher verfügbar.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorityDefaults: location: zones: ['ZONE1','ZONE2','...'] priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie
ZONE1,ZONE2,...
durch eine durch Kommas getrennte Liste der Standardzonen für automatisch erstellte Knoten, z. B. „us-central1-a','us-central1-b', 'us-central1-f'
“. GKE verwendet diese Zonen, wenn bestimmte Regeln im Feldspec.priorities
keine explizite Liste von Zonen enthalten.Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
gcloud
Verwenden Sie das Flag --autoprovisioning-locations
, um die Standardzonen für die automatische Erstellung von Knotenpools in der Befehlszeile festzulegen:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--autoprovisioning-locations=ZONE1,ZONE2,...
Ersetzen Sie ZONE1,ZONE2,...
durch eine durch Kommas getrennte Liste der Standardzonen für automatisch erstellte Knoten, z. B. us-central1-a','us-central1-b', 'us-central1-f'
.
So legen Sie die Standardzonen für die automatische Erstellung von Knotenpools mithilfe einer Konfigurationsdatei fest:
Geben Sie das Feld
autoprovisioningLocations
in der Konfigurationsdatei an:autoprovisioningLocations: - ZONE1 - ZONE2
Ersetzen Sie
ZONE1
,ZONE2
durch die Standardzonen für automatisch erstellte Knoten, z. B. „us-central1-a
“ und „us-central1-b
“.Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Vom Kunden verwaltete Verschlüsselungsschlüssel für die Bootlaufwerkverschlüsselung festlegen
Sie können einen vom Kunden verwalteten Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) in Cloud Key Management Service angeben, den GKE zum Verschlüsseln der Bootlaufwerke von Knoten in automatisch erstellten Knotenpools verwendet. Sie müssen den Schlüssel erstellen, bevor Sie ihn für die automatische Erstellung von Knotenpools verwenden können. Wenn Sie einen CMEK für Ihre Knoten-Bootlaufwerke festlegen möchten, wählen Sie eine der folgenden Optionen aus:
ComputeClass
In ComputeClasses müssen Sie den Schlüssel in jeder Prioritätsregel im Feld spec.priorities
in der ComputeClass angeben.
Verwenden Sie in einem ComputeClass-Manifest das Feld
priorities.storage.bootDiskKMSKey
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME - machineFamily: n4d storage: bootDiskKMSKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie Folgendes:
KEY_PROJECT_ID
: die Projekt-ID des Projekts, das den Schlüssel enthält.KEY_LOCATION
: der Speicherort des SchlüsselbundsKEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthältKEY_NAME
: Der Name des Schlüssels.
Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
gcloud
Geben Sie das Feld
bootDiskKmsKey
in der Konfigurationsdatei an:bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Ersetzen Sie Folgendes:
KEY_PROJECT_ID
: die Projekt-ID des Projekts, das den Schlüssel enthält.KEY_LOCATION
: der Speicherort des SchlüsselbundsKEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthältKEY_NAME
: Der Name des Schlüssels.
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Knotenintegrität und Secure Boot konfigurieren
Sie können Secure Boot und Integritätsmonitoring für automatisch erstellte Knotenpools nur über die Konfigurationsdatei für die automatische Knotenbereitstellung aktivieren.
Geben Sie das Feld
shieldedInstanceConfig
in der Konfigurationsdatei an:shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Automatische Knotenreparatur und automatische Upgrades konfigurieren
Sie können die Einstellungen für automatische Knotenreparaturen und automatische Knotenupgrades in automatisch erstellten Knotenpools ändern. Diese Funktionen sind in allen GKE-Clustern und Knotenpools standardmäßig aktiviert. Wir empfehlen, diese Funktionen aktiviert zu lassen, um die Zuverlässigkeit und Stabilität Ihrer Cluster zu verbessern.
Wenn Sie die Einstellungen für die automatische Knotenreparatur und das automatische Knotenupgrade ändern möchten, wählen Sie eine der folgenden Optionen aus:
ComputeClass
Verwenden Sie in einem ComputeClass-Manifest das Feld
autoRepair
und das FeldautoUpgrade
im Feldspec.nodePoolConfig
. Diese Felder sind in der GKE-Version 1.34.0-gke.2201000 und höher verfügbar.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: nodePoolConfig: autoRepair: true autoUpgrade: true priorities: - machineFamily: n4 - machineFamily: n4d whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
gcloud
Wenn Sie die Einstellungen für die automatische Reparatur und das automatische Upgrade über die Befehlszeile aktivieren möchten, verwenden Sie die Flags
--enable-autoprovisioning-autorepair
und--enable-autoprovisioning-autoupgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Wenn Sie die Einstellungen für die automatische Reparatur und das automatische Upgrade über die Befehlszeile deaktivieren möchten, verwenden Sie die Flags
--no-enable-autoprovisioning-autorepair
und--no-enable-autoprovisioning-autoupgrade
:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
So ändern Sie die Einstellungen für die automatische Reparatur und das automatische Upgrade von Knoten mit einer Konfigurationsdatei:
Geben Sie die Felder
management.autoRepair
undmanagement.autoUpgrade
in der Konfigurationsdatei an:management: autoRepair: true autoUpgrade: true
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Einstellungen für Surge-Upgrades konfigurieren
Sie können Surge-Upgrade-Einstellungen in automatisch erstellten Knotenpools angeben. Surge-Upgrades sind die Standardstrategie für Knotenupgrades in GKE. Wenn Sie die Surge-Upgrade-Einstellungen ändern möchten, müssen Sie die automatische Bereitstellung von Knoten auf Clusterebene konfigurieren.
Verwenden Sie die Flags
--autoprovisioning-max-surge-upgrade
und--autoprovisioning-max-unavailable-upgrade
, um Surge-Upgrade-Einstellungen in der Befehlszeile anzugeben:gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade=MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade=MAX_UNAVAILABLE
Ersetzen Sie Folgendes:
MAX_SURGE
: die maximale Anzahl von Knoten, die während eines Upgrades dem Knotenpool hinzugefügt werden könnenMAX_UNAVAILABLE
: die maximale Anzahl von Knoten im Knotenpool, die während Upgrades gleichzeitig nicht verfügbar sind
So geben Sie Surge-Upgrade-Einstellungen mithilfe einer Konfigurationsdatei an:
Geben Sie die Felder
upgradeSettings.maxSurgeUpgrade
undupgradeSettings.maxUnavailableUpgrade
in der Konfigurationsdatei an:upgradeSettings: maxSurgeUpgrade: MAX_SURGE maxUnavailableUpgrade: MAX_UNAVAILABLE
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
Die von Ihnen angegebenen Surge-Upgrade-Einstellungen gelten nur, wenn in Ihrem Cluster Surge-Upgrades zum Upgraden automatisch erstellter Knotenpools verwendet werden. Führen Sie den folgenden Befehl aus, um die Knotenupgrade-Strategie für neue, automatisch erstellte Knotenpools auf Surge-Upgrades umzustellen:
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-autoprovisioning \
--enable-autoprovisioning-surge-upgrade
Wenn Sie die Upgradestrategie ändern, verwendet GKE alle Einstellungen, die Sie zuvor für diese Upgradestrategie konfiguriert haben.
Blau/Grün-Upgrades für neue automatisch erstellte Knotenpools verwenden
Sie können die Strategie für Knotenupgrades für alle neuen, automatisch erstellten Knotenpools auf Blau/Grün-Upgrades umstellen und die Standardeinstellungen für Blau/Grün-Upgrades anpassen. Wenn Sie Ihre Upgradestrategie ändern möchten, müssen Sie die automatische Knotenbereitstellung auf Clusterebene konfigurieren. Alle Änderungen, die Sie vornehmen, gelten nur für neue automatisch erstellte Knotenpools. Sie können auch vorhandene automatisch erstellte Knotenpools aktualisieren, um Blau/Grün-Upgrades zu verwenden.
Führen Sie den folgenden Befehl aus, um Blau/Grün-Upgrades und die GKE-Standardeinstellungen für neue, automatisch erstellte Knotenpools zu verwenden:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
Führen Sie den folgenden Befehl aus, um Blau/Grün-Upgrades zu verwenden und eigene Standardeinstellungen für neue, automatisch erstellte Knotenpools zu konfigurieren:
gcloud container clusters update CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
Ersetzen Sie Folgendes:
NODE_POOL_SOAK_DURATION
: Die Dauer in Sekunden, die GKE nach dem Leeren aller Knoten-Batches im blauen Pool wartet, bevor der blaue Pool gelöscht wird. Der Standardwert ist3600
.BATCH_NODE_COUNT
: Die Anzahl der Knoten, die während der blauen Poolleerungsphase in einem Batch geleert werden sollen. Der Standardwert ist1
. Wenn Sie den Wert0
angeben, überspringt GKE die blaue Poolleerungsphase.BATCH_SOAK_DURATION
: Die Dauer in Sekunden, die GKE wartet, bevor ein Batch-Drain-Vorgang gestartet wird, nachdem der vorherige Drain-Vorgang abgeschlossen wurde. Der Standardwert ist0
.
Benutzerdefinierte Knoten-Bootlaufwerke konfigurieren
Wenn Sie den Typ und die Größe der Bootlaufwerke angeben möchten, die GKE an jede Knoten-VM in einem automatisch erstellten Knotenpool anhängt, wählen Sie eine der folgenden Optionen aus:
ComputeClass
Verwenden Sie die Felder
bootDiskType
undbootDiskSize
im Feldspec.priorities.storage
in einer ComputeClass:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: n4 storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE - machineFamily: n4d storage: bootDiskType: BOOT_DISK_TYPE bootDiskSize: BOOT_DISK_SIZE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie Folgendes:
BOOT_DISK_TYPE
: Der Laufwerkstyp, der als Knoten-Bootlaufwerk verwendet werden soll. Der von Ihnen angegebene Wert muss vom Compute Engine-Maschinentyp unterstützt werden, der von GKE für diese Prioritätsregel verwendet wird. Der Wert muss einer der folgenden sein:pd-balanced
: abgestimmter nichtflüchtiger Speicher.pd-standard
: nichtflüchtiger Standardspeicher.pd-ssd
: auf Leistung ausgelegter Persistent Disk SSD-Speicher.hyperdisk-balanced
: Google Cloud Hyperdisk Balanced.
BOOT_DISK_SIZE
: die Größe des Bootlaufwerks des Knotens in GiB. Der Mindestwert beträgt10
.
Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
gcloud
Geben Sie in der Konfigurationsdatei die Felder
diskSizeGb
unddiskType
an:diskSizeGb: BOOT_DISK_SIZE diskType: BOOT_DISK_TYPE
Ersetzen Sie Folgendes:
BOOT_DISK_TYPE
: Der Laufwerkstyp, der als Knoten-Bootlaufwerk verwendet werden soll. Der von Ihnen angegebene Wert muss vom Compute Engine-Maschinentyp unterstützt werden, der von GKE für diese Prioritätsregel verwendet wird. Der Wert muss einer der folgenden sein:pd-balanced
: abgestimmter nichtflüchtiger Speicher.pd-standard
: nichtflüchtiger Standardspeicher.pd-ssd
: auf Leistung ausgelegter Persistent Disk SSD-Speicher.hyperdisk-balanced
: Google Cloud Hyperdisk Balanced.
BOOT_DISK_SIZE
: die Größe des Bootlaufwerks des Knotens in GiB. Der Mindestwert beträgt10
.
Wenn Ihre Konfigurationsdatei andere Einstellungen enthält, ändern Sie diese nicht. Alle Änderungen oder Entfernungen in der Konfigurationsdatei wirken sich auch auf die entsprechenden Einstellungen auf Clusterebene aus.
Stellen Sie GKE die Konfigurationsdatei zur Verfügung, indem Sie das Flag
--autoprovisioning-config-file
und das Flag--enable-autoprovisioning
für einen neuen oder vorhandenen Cluster angeben:gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --enable-autoprovisioning \ --autoprovisioning-config-file=PATH_TO_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.PATH_TO_CONFIGURATION_FILE
: der Pfad zur Konfigurationsdatei.
GKE reserviert einen Teil des Knoten-Bootlaufwerks für Systemfunktionen und für sitzungsspezifischen Speicher. Weitere Informationen finden Sie unter Von Knoten-Bootlaufwerk unterstützter sitzungsspezifischer Speicher.
Automatisch erstellte Knotenpools für häufige Szenarien konfigurieren
In den folgenden Abschnitten erfahren Sie, wie Sie automatisch erstellte Knotenpools für bestimmte gängige GKE-Anwendungsfälle anfordern. Weitere Informationen zu zusätzlichen Anwendungsfällen und unterstützten Konfigurationen finden Sie in der Dokumentation zu Ihrem spezifischen Anwendungsfall.
Maschinenserie oder Maschinentyp auswählen
Wählen Sie eine der folgenden Optionen aus, um eine unterstützte Compute Engine-Maschinenserie oder einen unterstützten Maschinentyp auszuwählen:
ComputeClass
Geben Sie in einem ComputeClass-Manifest im Feld
spec.priorities
eines der folgenden Felder an. Sie können beide Felder im selben ComputeClass-Manifest, aber nicht in derselben Prioritätsregel angeben.Geben Sie das Feld
machineFamily
in einer Prioritätsregel an, um eine Maschinenserie auszuwählen:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineFamily: MACHINE_SERIES whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie
MACHINE_SERIES
durch eine Compute Engine-Maschinenserie, z. B.n4
.Geben Sie das Feld
machineType
in einer Prioritätsregel an, um einen Maschinentyp auszuwählen:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machineType: MACHINE_TYPE whenUnsatisfiable: ScaleUpAnyway nodePoolAutoCreation: enabled: true
Ersetzen Sie
MACHINE_TYPE
durch einen Compute Engine-Maschinentyp, z. B.c4-standard-96
. In GKE-Version 1.33.2-gke.1111000 und höher können Sie in diesem Feld auch benutzerdefinierte Maschinentypen angeben.
Sie können das Feld
machineFamily
und das FeldmachineType
nicht in derselben Prioritätsregel angeben.Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
Pod-Spezifikation
Wählen Sie in einem Pod-Manifest eines der folgenden Knotenlabels aus:
Verwenden Sie das Knotenlabel
cloud.google.com/machine-family
, um eine Maschinenserie auszuwählen:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Ersetzen Sie
MACHINE_SERIES
durch eine Compute Engine-Maschinenserie, z. B.n4
.Wenn Sie einen vordefinierten Maschinentyp auswählen möchten, verwenden Sie die Knotenlabels
cloud.google.com/machine-family
undnode.kubernetes.io/instance-type
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES node.kubernetes.io/instance-type: MACHINE_TYPE containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Ersetzen Sie
MACHINE_TYPE
durch einen Compute Engine-Maschinentyp in der angegebenen Maschinenserie. Wenn Sie beispielsweisen4
fürMACHINE_SERIES
angeben, können Sien4-standard-80
fürMACHINE_TYPE
angeben.In der GKE-Version 1.33.2-gke.1111000 können Sie in diesem Feld auch benutzerdefinierte Maschinentypen angeben.
Erstellen Sie den Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Ersetzen Sie
PATH_TO_POD_MANIFEST
durch den Pfad zum Pod-Manifest.
GPUs auswählen
Wenn Sie GPUs für automatisch erstellte Knotenpools anfordern möchten, wählen Sie eine der folgenden Optionen aus:
ComputeClass
Geben Sie im ComputeClass-Manifest das Feld
spec.priorities.gpu
an:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - gpu: type: GPU_TYPE count: GPU_COUNT driverVersion: DRIVER_VERSION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
Ersetzen Sie Folgendes:
GPU_TYPE
: Der GPU-Typ, der angehängt werden soll, z. B.nvidia-l4
.GPU_COUNT
: Die Anzahl der GPUs, die an jeden Knoten angehängt werden sollen. Dieser Wert muss mindestens1
sein.DRIVER_VERSION
: die zu installierende GPU-Treiberversion. Dieser Wert mussdefault
oderlatest
sein. Für dieses Feld ist die GKE-Version 1.31.1-gke.1858000 oder höher erforderlich.
Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.Wählen Sie die ComputeClass in einer GPU-Arbeitslast aus, wie im folgenden Beispiel:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/compute-class: nvidia-l4-class containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: 1
Pod-Spezifikation
Wenn Sie GPUs in Ihren Pod-Spezifikationen auswählen möchten, müssen Sie die automatische Knotenbereitstellung auf Clusterebene konfigurieren und Ressourcenlimits für diesen GPU-Typ festlegen. So konfigurieren Sie GPU-Ressourcenlimits und wählen GPUs in Ihren Pods aus:
- Konfigurieren Sie Ressourcenlimits auf Clusterebene für die GPUs, die Sie verwenden möchten, wie im Abschnitt Ressourcenlimits für die automatische Erstellung von Knotenpools konfigurieren beschrieben.
GPUs mit Knotenlabels in der Pod-Spezifikation auswählen:
apiVersion: v1 kind: Pod metadata: name: my-gpu-pod spec: nodeSelector: cloud.google.com/gke-accelerator: GPU_TYPE cloud.google.com/gke-accelerator-count: GPU_COUNT cloud.google.com/gke-gpu-driver-version: DRIVER_VERSION containers: - name: my-gpu-container image: nvidia/cuda:11.0.3-runtime-ubuntu20.04 command: ["/bin/bash", "-c", "--"] args: ["while true; do sleep 600; done;"] resources: limits: nvidia.com/gpu: GPU_QUANTITY
Ersetzen Sie Folgendes:
GPU_TYPE
: Der GPU-Typ, der angehängt werden soll, z. B.nvidia-l4
.GPU_COUNT
: Die Anzahl der GPUs, die an jeden Knoten angehängt werden sollen. Dieser Wert muss mindestens1
sein.DRIVER_VERSION
: die zu installierende GPU-Treiberversion. Dieser Wert mussdefault
oderlatest
sein. In GKE-Version 1.32.2-gke.1297000 und höher installiert GKE automatisch die Treiberversiondefault
. Für dieses Knotenlabel ist die GKE-Version 1.29.2-gke.1108000 oder höher erforderlich. Weitere Informationen finden Sie unter Treiber mithilfe der automatischen Knotenbereitstellung mit GPUs installieren.GPU_QUANTITY
: Die Anzahl der GPUs, die an den Pod angehängt werden sollen. Dieser Wert muss kleiner oder gleich dem Wert vonGPU_COUNT
sein.
TPUs auswählen
Sie können TPUs in Compute-Klassen oder Pod-Spezifikationen anfordern. In diesem Abschnitt wird davon ausgegangen, dass Sie mit der Cloud TPU-Auswahl vertraut sind und den TPU-Typ, die Topologie und die Anzahl kennen, die Sie verwenden möchten. Die Schritte, die Sie ausführen, hängen davon ab, wie Sie TPUs auswählen:
- ComputeClasses: Weitere Informationen finden Sie unter TPUs mit benutzerdefinierten Compute-Klassen bereitstellen.
- Pod-Spezifikation:
- Konfigurieren Sie Ressourcenlimits auf Clusterebene für die TPUs, die Sie verwenden möchten, wie im Abschnitt Ressourcenlimits für die automatische Erstellung von Knotenpools konfigurieren beschrieben.
- Konfigurieren Sie Selektoren und Ressourcenanforderungen in Ihren Pod-Spezifikationen, wie unter Arbeitslast auf TPU-Slice-Knoten ausführen beschrieben.
Laufzeit automatisch erstellter Knoten begrenzen
Sie können eine maximale Dauer angeben, nach der GKE die automatisch erstellten Knoten beendet. Für dieses Zeitlimit gelten Compute Engine-Einschränkungen.
Wählen Sie eine der folgenden Optionen aus:
ComputeClass
Verwenden Sie in einem ComputeClass-Manifest das Feld
spec.priorities.maxRunDurationSeconds
. Dieses Feld ist in der GKE-Version 1.32.1-gke.1159000 und höher verfügbar.apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTE_CLASS spec: priorities: - machine-family: n4 maxRunDurationSeconds: MAX_RUN_DURATION whenUnsatisfiable: DoNotScaleUp nodePoolAutoCreation: enabled: true
Ersetzen Sie
MAX_RUN_DURATION
durch die Zeit in Sekunden, die automatisch erstellte Knoten ausgeführt werden können, bevor GKE die Knoten beendet.Wenden Sie das ComputeClass-Manifest auf den Cluster an:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
Ersetzen Sie
PATH_TO_COMPUTECLASS_MANIFEST
durch den Pfad zur ComputeClass-Manifestdatei.
Pod-Spezifikation
Verwenden Sie in Ihrem Pod-Manifest einen Knotenselektor für das Knotenlabel
cloud.google.com/gke-max-run-duration-seconds
. Dieses Knotenlabel ist in GKE-Version 1.31.2-gke.1518000 und höher verfügbar.apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: n4 cloud.google.com/gke-max-run-duration-seconds: MAX_RUN_DURATION containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Ersetzen Sie
MAX_RUN_DURATION
durch die Zeit in Sekunden, die automatisch erstellte Knoten ausgeführt werden können, bevor GKE die Knoten beendet.Erstellen Sie den Pod:
kubectl apply -f PATH_TO_POD_MANIFEST
Ersetzen Sie
PATH_TO_POD_MANIFEST
durch den Pfad zum Pod-Manifest.
Mindest-CPU-Plattform angeben
Die automatische Knotenbereitstellung unterstützt das Erstellen von Knotenpools mit einer angegebenen Mindest-CPU-Plattform. Sie können die Mindest-CPU-Plattform auf Arbeitslastebene (empfohlen) oder auf Clusterebene angeben.
Automatische Erstellung von Knotenpools deaktivieren
In den folgenden Abschnitten erfahren Sie, wie Sie die automatische Erstellung von Knotenpools für bestimmte Knotenpools oder für den gesamten Cluster deaktivieren. Sie können die automatische Erstellung von Knotenpools in einer ComputeClass auch deaktivieren, indem Sie im Feld nodePoolAutoCreation.enabled
der ComputeClass den Wert false
angeben. Wir empfehlen jedoch nicht, die automatische Erstellung für ComputeClasses zu deaktivieren, da sie ein Hauptvorteil von ComputeClasses ist und Ihnen die Verwendung von Funktionen wie aktiver Migration und Fallback-Prioritäten ermöglicht.
Automatische Erstellung für bestimmte Knotenpools deaktivieren
Sie können verhindern, dass GKE die Knoten in vorhandenen automatisch erstellten Knotenpools verwaltet. Diese Aktion hat folgende Auswirkungen:
- Der Cluster Autoscaler beendet das Erstellen oder Löschen von Knoten in diesem Knotenpool. Wenn Sie möchten, dass GKE die Knoten automatisch skaliert, können Sie Cluster Autoscaler für diesen Knotenpool separat aktivieren.
- GKE löscht den Knotenpool nicht, wenn die Anzahl der Knoten null ist.
- GKE platziert weiterhin ausstehende Pods auf vorhandenen Knoten in diesem Knotenpool, die verfügbar sind. Wenn die automatische Knotenbereitstellung für den Cluster weiterhin aktiviert ist, kann GKE bei Bedarf auch neue Knotenpools für ausstehende Pods erstellen.
Führen Sie den folgenden Befehl aus, um die automatische Erstellung für einen bestimmten Knotenpool zu deaktivieren:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning
Automatische Knotenbereitstellung für den Cluster deaktivieren
Sie können die automatische Erstellung von Knotenpools für Ihren gesamten Cluster deaktivieren, indem Sie die Clustereinstellung für die automatische Knotenbereitstellung deaktivieren. Diese Aktion hat folgende Auswirkungen:
- Der Cluster Autoscaler beendet das Erstellen und Löschen von Knoten in vorhandenen automatisch erstellten Knotenpools. Manuell erstellte Knotenpools, die den Cluster-Autoscaler verwenden, sind nicht betroffen.
- GKE erstellt nicht automatisch neue Knotenpools für ausstehende Arbeitslasten. Cluster überwachen, um festgefahrene Pods zu vermeiden
Wenn der Cluster die folgenden Anforderungen erfüllt, erstellt GKE weiterhin neue Knotenpools für Compute-Klassen, für die die automatische Erstellung aktiviert ist:
- Verwendet GKE-Version 1.33.3-gke.1136000 oder höher.
- Der Cluster ist für den Rapid Release Channel registriert.
Wenn der Cluster diese Anforderungen nicht erfüllt, erstellt GKE keine neuen Knotenpools für Compute-Klassen, die die automatische Erstellung ermöglichen.
Wenn Sie die Einstellung für die automatische Knotenbereitstellung auf Clusterebene später wieder aktivieren, wird die automatische Erstellung von Knotenpools für vorhandene Knotenpools nicht wieder aktiviert. Sie müssen einzelne Knotenpools als automatisch erstellt markieren.
Wenn Sie die Einstellung für die automatische Knotenbereitstellung auf Clusterebene deaktivieren möchten, wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf:
Klicken Sie auf den Namen des Clusters, den Sie ändern möchten. Die Seite Clusterdetails wird geöffnet.
Klicken Sie auf den Tab Details.
Klicken Sie im Abschnitt Automatisierung in der Zeile Automatische Knotenbereitstellung auf Bearbeiten. Der Bereich Automatische Knotenbereitstellung bearbeiten wird angezeigt.
Entfernen Sie das Häkchen bei Automatische Knotenbereitstellung aktivieren.
Klicken Sie auf Änderungen speichern.
gcloud
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--no-enable-autoprovisioning