Google Kubernetes Engine (GKE) kann Knotenpools in Ihren Clustern basierend auf der Konfiguration Ihrer Arbeitslasten automatisch erstellen und verwalten. In diesem Dokument wird beschrieben, wie die automatische Erstellung von Knotenpools funktioniert, welche Skalierungsparameter und Standardverhalten es gibt und welche Empfehlungen Ihnen helfen können, die Skalierbarkeit zu verbessern. Dieses Dokument richtet sich an Clusteradministratoren, die die Kosten für die manuelle Infrastrukturverwaltung in ihren Clustern im Standardmodus senken möchten.
Sie sollten mit den folgenden Konzepten vertraut sein:
Im Autopilot-Modus erstellt und verwaltet GKE immer Knoten und Knotenpools für Sie basierend auf Ihren Arbeitslasten. Sie müssen die automatische Erstellung von Knotenpools für Autopilot-Cluster oder für Autopilot-Arbeitslasten in Standardclustern nicht manuell konfigurieren. Weitere Informationen finden Sie in der GKE Autopilot-Übersicht.
Was ist die automatische Erstellung von Knotenpools?
In GKE sind Knotenpools logische Gruppen von Knoten. Jeder Knoten in einem Knotenpool hat dieselbe Konfiguration wie jeder andere Knoten in diesem Knotenpool. Die automatische Erstellung von Knotenpools ist ein Mechanismus für das automatische Infrastruktur-Autoscaling, mit dem GKE neue Knotenpools in Ihrem Cluster erstellen kann, die den Anforderungen Ihrer Arbeitslasten entsprechen. GKE verwaltet diese automatisch erstellten Knotenpools und führt Aufgaben wie das Aktualisieren von Knotenmetadaten, das Erstellen und Löschen von Knoten im Knotenpool und das Löschen des gesamten Knotenpools aus, wenn er nicht mehr benötigt wird. Die automatische Erstellung von Knotenpools ist eine Erweiterung des GKE Cluster Autoscaler, der Knoten in einzelnen Knotenpools automatisch skaliert.
Die automatische Erstellung von Knotenpools soll es GKE ermöglichen, leere Knotenpools in Ihrem Cluster automatisch herunterzuskalieren und zu entfernen. Sie können keine Mindestanzahl von Knoten festlegen, die jeder automatisch erstellte Knotenpool haben muss, da eine Mindestanzahl größer als null das Entfernen leerer Knotenpools verhindern würde. Wenn für Ihren Anwendungsfall eine Mindestanzahl von Knoten erforderlich ist, die immer in Ihrem Cluster ausgeführt werden müssen, erstellen Sie manuell einen Knotenpool mit aktiviertem Autoscaling.
Funktionsweise
Die automatische Erstellung von Knotenpools erweitert den GKE-Cluster-Autoscaler, sodass GKE neue Knotenpools bereitstellen kann, die die Hardwareanforderungen und Ressourcenanfragen ausstehender Pods erfüllen. Sie können Ihre Hardwareanforderungen auf folgende Weise definieren:
- Verwenden Sie ComputeClasses, die Sie dann in verschiedenen Pods mit einem Knotenselektor auswählen. Wir empfehlen diese Methode, da Sie gemeinsame Knotenkonfigurationen zentral definieren können, die von mehreren Arbeitslasten verwendet werden können.
- Verwenden Sie Knotenselektoren oder Knotenaffinität, um bestimmte GKE-Knotenlabels in Pod-Spezifikationen anzufordern.
GKE konfiguriert neue Knotenpools basierend auf Parametern wie den folgenden:
- Ressourcenanfragen für CPU, Arbeitsspeicher und flüchtigen Speicher in Ihren Pods und Containern, einschließlich aller Pods, die von DaemonSets verwaltet werden.
- GPU- und TPU-Anforderungen in Pod-Spezifikationen oder in Compute-Klassen.
- Hardwareanforderungen wie Maschinentypen oder Bootlaufwerktypen in den Spezifikationen ausstehender Pods oder in ComputeClasses.
- Toleranzen in den Spezifikationen ausstehender Pods mit übereinstimmenden Knotenselektoren.
GKE konfiguriert die Ressourcenkapazität jedes Knotens in einem automatisch erstellten Knotenpool so, dass sie größer oder gleich den Ressourcenanfragen Ihrer ausstehenden Pods ist. Sie müssen dafür sorgen, dass Ihre Ressourcenanfragen groß genug sind, damit der Pod wie erwartet funktioniert. Wenn Ihre Pod-Anfragen zu niedrig sind, werden die Pods nicht wie erwartet ausgeführt, nachdem GKE sie auf automatisch erstellten Knoten geplant hat.
Konfiguration von Knotenmetadaten
GKE konfiguriert auch Knotenmetadaten (z. B. Labels, Anmerkungen und Knoten-Taints) basierend auf den Anforderungen Ihrer Arbeitslast, wie in den folgenden Beispielen:
- Wenn Sie die N2-Maschinenserie anfordern, fügt GKE jedem Knoten das Knotenlabel
cloud.google.com/machine-family: n2
hinzu. - Wenn Sie in Ihrem Pod eine Compute-Klasse auswählen, fügt GKE ein Knotenlabel mit dem Schlüssel
cloud.google.com/compute-class
hinzu, der auf den Namen dieser Compute-Klasse festgelegt ist. - Wenn Ihr Pod sowohl eine Toleranz als auch einen Knotenselektor für dasselbe Knotenlabel hat, fügt GKE den automatisch erstellten Knoten Knotenmarkierungen für diese Toleranzen hinzu.
Automatisch erstellte Knotenpools löschen
Durch die automatische Erstellung von Knotenpools kann der Cluster-Autoscaler neue Knotenpools und Knoten erstellen, um eingehende ausstehende Pods auszuführen. Wenn die Anzahl der Pods in einem automatisch erstellten Knotenpool abnimmt, skaliert Cluster Autoscaler den Knotenpool nach und nach herunter. Wenn möglich, beendet GKE nicht ausgelastete Knoten im Knotenpool per Drain, konsolidiert Pods auf anderen Knoten und entfernt die leeren Knoten.
Wenn die Anzahl der Knoten in einem automatisch erstellten Knotenpool null ist, löscht GKE diesen Knotenpool. GKE löscht keine Knotenpools, die Sie von der automatischen Erstellung von Knotenpools ausschließen, z. B. manuell erstellte Knotenpools. Weitere Informationen dazu, wie der Cluster Autoscaler Knotenpools herunterskaliert, finden Sie unter Funktionsweise von Cluster Autoscaler.
GKE-Skalierungseinstellungen
Die folgenden Einstellungen gelten, wenn GKE Ihre Infrastruktur automatisch skaliert:
- Verschwendete Rechenressourcen reduzieren: GKE verwendet die Ressourcenkapazität vorhandener automatisch erstellter Knotenpools in Ihrem Cluster, um den Maschinentyp für neue Knotenpools zu bestimmen. Wenn Ihr Cluster größer wird, verwendet GKE bevorzugt größere Maschinentypen für neue Knotenpools, damit mehr Ihrer Pods auf jedem Knoten im Knotenpool ausgeführt werden können.
- Skalierbarkeit und Latenz optimieren: GKE priorisiert immer das Hochskalieren vorhandener, kompatibler Knotenpools anstelle des Erstellens neuer Knotenpools. Die Stärke dieser Präferenz nimmt zu, je mehr unterschiedliche Knotenpools in Ihrem Cluster vorhanden sind. Wenn die Anzahl der verschiedenen Knotenpools die unterstützten Grenzwerte für optimale Latenz und Skalierbarkeit erreicht, wird die Priorität für das Erstellen neuer Knotenpools in GKE aufgehoben.
Diese Prioritäten tragen dazu bei, dass Ihre Cluster eine effiziente Nutzung von Computeressourcen im großen Maßstab haben, wie in den folgenden Beispielszenarien:
- In Clustern mit einer geringen Anzahl von Knotenpools und einer geringeren Ressourcennutzung erstellt GKE häufiger neue Knotenpools und verwendet kleinere Maschinentypen für diese Knotenpools.
- In Clustern mit einer großen Anzahl von Knotenpools ist die Ressourcennutzung hoch. GKE erstellt seltener neue Knotenpools und verwendet größere Maschinentypen für diese Knotenpools, sodass die Pod-Planung fortgesetzt werden kann, während gleichzeitig die Fortschritte in Richtung Cluster-Skalierbarkeit und Latenzlimits verlangsamt werden.
Sie können die Mindestgröße der Instanzen, die GKE für Ihre automatisch erstellten Knotenpools verwendet, manuell steuern. Verwenden Sie dazu eine Compute-Klasse mit dem Feld priorities.machineFamily
und entweder dem Feld priorities.minCores
oder dem Feld priorities.minMemoryGb
.
Aktivierungsmethoden für die automatische Erstellung von Knotenpools
GKE kann automatisch Knotenpools für bestimmte Compute-Klassen oder für jede Arbeitslast erstellen, die eine kompatible Konfiguration verwendet. Das hängt davon ab, wie Sie Ihren Cluster konfigurieren.
Methoden zur Aktivierung | |
---|---|
Auf Arbeitslastebene (empfohlen) | In GKE-Version 1.33.3-gke.1136000 und höher können Sie ComputeClasses verwenden, um die automatische Erstellung von Knotenpools zu aktivieren, ohne die automatische Knotenbereitstellung auf Clusterebene zu verwenden. GKE erstellt neue Knotenpools nur für Arbeitslasten, für die bestimmte Compute-Klassen mit aktivierter automatischer Erstellung ausgewählt sind. Vorhandene Arbeitslasten im Cluster sind davon nicht betroffen. Auch in GKE-Versionen vor 1.33.3-gke.1136000 sind ComputeClasses die empfohlene Methode zum Anfordern und Konfigurieren von Infrastruktur für Ihre Arbeitslasten. ComputeClasses bieten einzigartige Funktionen und ermöglichen Ihnen, die Skalierung in Ihrem Cluster flexibel zu optimieren. Weitere Informationen finden Sie unter Benutzerdefinierte Compute-Klassen. |
Clusterebene | Aktivieren Sie die automatische Knotenbereitstellung für den gesamten Cluster. Sie müssen Limits für Ressourcen wie CPU und Arbeitsspeicher in Ihrem Cluster festlegen. Diese Limits gelten für den gesamten Cluster. Die Konfiguration auf Clusterebene ist erforderlich, um die automatische Erstellung von Knotenpools in GKE-Versionen vor 1.33.3-gke.1136000 zu aktivieren. GKE kann neue Knotenpools für alle ausstehenden Arbeitslasten im Cluster erstellen, indem ComputeClasses oder Selektoren in den Pod-Spezifikationen verwendet werden. |
Diese Konfigurationsmethoden schließen sich nicht gegenseitig aus. Sie können Compute-Klassen verwenden, um Knotenpools in Clustern mit automatischer Knotenbereitstellung automatisch zu erstellen. Wenn Sie beide Methoden verwenden, um die automatische Erstellung von Knotenpools in einem Cluster zu aktivieren, verwendet GKE die folgende Prioritätsreihenfolge, um den Wert einer Konfigurationseinstellung für einen Knotenpool zu ermitteln:
- ComputeClass oder Pod-Spezifikation: Wenn Sie eine Einstellung (z. B. einen Maschinentyp) in einer ComputeClass oder in einer Pod-Spezifikation angeben, verwendet GKE diese Einstellung.
- Standardeinstellung für die automatische Knotenbereitstellung auf Clusterebene: Wenn eine Einstellung nicht in einer ComputeClass oder einer Pod-Spezifikation angegeben ist, prüft GKE, ob Sie einen Standardwert für die automatische Knotenbereitstellung im Cluster festgelegt haben. Wenn ein Standardwert auf Clusterebene vorhanden ist, verwendet GKE diesen Wert.
- Standardeinstellung auf Clusterebene: Wenn eine Einstellung nicht in ComputeClasses, Pod-Spezifikationen oder als Standardwert für die automatische Knotenbereitstellung auf Clusterebene angegeben ist, verwendet GKE den Standardwert, den Google Cloud für den Cluster festlegt.
Stellen Sie sich beispielsweise ein Szenario vor, in dem GKE versucht, einen Maschinentyp für einen automatisch erstellten Knotenpool zu finden. Die oben genannte Reihenfolge der Priorität gilt so:
- GKE prüft, ob in der Pod-Spezifikation oder in der ComputeClass des Pods ein Maschinentyp angegeben ist.
- Wenn in der Pod-Spezifikation oder ComputeClass kein Maschinentyp angegeben ist, prüft GKE, ob Sie im Cluster einen Standardmaschinentyp für die automatische Knotenbereitstellung festgelegt haben.
- Wenn Sie keinen Standardmaschinentyp für die automatische Knotenbereitstellung festgelegt haben, verwendet GKE den Standardmaschinentyp des Clusters.
Wir empfehlen, in den meisten Fällen nur die Aktivierungsmethode für ComputeClass zu verwenden. In den folgenden Abschnitten finden Sie Details zu den einzelnen Konfigurationsmethoden, einschließlich Einschränkungen und Überlegungen.
Aktivierung auf Arbeitslastebene mit Compute-Klassen
Sie können die automatische Erstellung von Knotenpools für jede ComputeClass in Ihrem Cluster aktivieren, indem Sie eines der folgenden Felder in der ComputeClass-Spezifikation verwenden:
nodePoolAutoCreation
: GKE erstellt Knotenpools automatisch nach Bedarf. Sie können weiterhin mit den Knotenpools interagieren. In GKE werden nur die von Ihnen konfigurierten Einstellungen oder Einschränkungen implementiert.autopilot
: Führen Sie die Arbeitslasten, für die diese ComputeClass ausgewählt wird, im Autopilot-Modus aus. Ähnlich wie bei einem Autopilot-Cluster verwaltet GKE die Knoten vollständig für Sie und implementiert verschiedene Autopilot-Einschränkungen und -Einstellungen. Wenn Sie das Feldautopilot
verwenden, können Sie dieses Dokument überspringen. Weitere Informationen finden Sie unter Autopilot-Modus-Arbeitslasten in Standardclustern.
In Clustern, die die folgenden Anforderungen erfüllen, können Sie diese Felder in einer ComputeClass verwenden, ohne die automatische Knotenbereitstellung auf Clusterebene zu aktivieren:
- Verwenden Sie die GKE-Version 1.33.3-gke.1136000 oder höher.
- Sie sind für den Rapid Release Channel registriert.
Wenn Sie die automatische Erstellung von Knotenpools in einer ComputeClass konfigurieren, ohne die automatische Knotenbereitstellung für den Cluster zu aktivieren, erstellt GKE nur für Arbeitslasten, die die ComputeClass verwenden, neue Knotenpools. Andere Arbeitslasten sind davon nicht betroffen.
Das folgende ComputeClass-Manifest aktiviert die automatische Erstellung von Knotenpools für alle Pods, die die ComputeClass verwenden:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: example-computeclass
spec:
priorities:
- machineFamily: n4
- machineFamily: c4
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Aktivierung auf Clusterebene mit automatischer Knotenbereitstellung
Wenn Sie die automatische Erstellung von Knotenpools für den gesamten Cluster aktivieren möchten, aktivieren Sie die Funktion automatische Knotenbereitstellung für den Cluster über die Google Kubernetes Engine API. Mit der automatischen Knotenbereitstellung kann GKE bei Bedarf neue Knotenpools für jede Arbeitslast im Cluster basierend auf Pod-Spezifikationen oder ComputeClass-Konfigurationen erstellen. GKE verwaltet keine vorhandenen Knotenpools im Cluster. Sie können jedoch einzelne Knotenpools als automatisch bereitgestellt markieren, nachdem Sie die automatische Knotenbereitstellung für den Cluster aktiviert haben.
Aktivieren Sie die automatische Knotenbereitstellung in Situationen wie den folgenden:
- Sie möchten, dass GKE automatisch Knotenpools in einem Cluster erstellt, in dem eine GKE-Version vor 1.33.3-gke.1136000 ausgeführt wird.
Sie möchten clusterweite Ressourcenlimits manuell festlegen. In GKE-Versionen vor 1.33.3-gke.1136000 müssen Sie clusterweite Ressourcenlimits festlegen, auch wenn Sie ComputeClasses verwenden.
Sie möchten bestimmte Funktionen oder Konfigurationen verwenden, die von ComputeClasses nicht unterstützt werden.
Sie möchten Standardwerte für die Knotenkonfiguration für den gesamten Cluster festlegen.
Nachdem Sie die automatische Knotenbereitstellung aktiviert haben, können Sie Standardwerte für verschiedene Knoteneinstellungen mit der Google Cloud CLI oder einer YAML-Konfigurationsdatei konfigurieren.
Ressourcenlimits auf Clusterebene bei automatischer Knotenbereitstellung
Wenn Sie die automatische Knotenbereitstellung für einen gesamten Cluster aktivieren, müssen Sie auch Limits für Ressourcen wie CPU, Arbeitsspeicher, GPUs und TPUs im Cluster konfigurieren. Diese Limits gelten für die Summe aller Ressourcenkapazitäten im Cluster, einschließlich manuell erstellter Knotenpools und ComputeClasses. GKE erstellt keine neuen Knoten oder Knotenpools, wenn durch den Vorgang eines dieser Ressourcenlimits überschritten würde.
Diese Ressourcenlimits auf Clusterebene sind nur erforderlich, wenn Sie die automatische Knotenbereitstellung im Cluster aktivieren. In Clustern, die die folgenden Anforderungen erfüllen, können Sie die automatische Erstellung von Knotenpools in ComputeClasses verwenden, ohne die automatische Knotenbereitstellung zu aktivieren:
- Verwenden Sie die GKE-Version 1.33.3-gke.1136000 oder höher.
- Sie sind für den Rapid Release Channel registriert.
Wenn Ihr Cluster diese Anforderungen erfüllt, empfehlen wir, nur ComputeClasses zum Konfigurieren automatisch erstellter Knotenpools zu verwenden.
Standardeinstellungen für automatisch erstellte Knotenpools
Sie können Standardwerte angeben, die GKE auf automatisch erstellte Knotenpools auf Arbeitslast- oder Clusterebene anwendet.
- Standardeinstellungen auf Arbeitslast-Ebene: Sie können das Feld
spec.nodePoolConfig
und das Feldspec.priorityDefaults
in der ComputeClass-Spezifikation verwenden, um Standardwerte für bestimmte Knoteneinstellungen festzulegen. Diese Standardwerte gelten nur für die Knotenpools, die GKE für diese Compute-Klasse erstellt. - Standardeinstellungen auf Clusterebene: Sie können Standardwerte für automatisch erstellte Knotenpools festlegen, wenn Sie die automatische Knotenbereitstellung konfigurieren. Zum Angeben von Standardwerten verwenden Sie die gcloud CLI oder eine YAML-Konfigurationsdatei.
Diese Methoden zum Festlegen von Standardwerten schließen sich nicht gegenseitig aus. Wenn Sie Standardwerte für eine bestimmte Einstellung in einer ComputeClass und für den gesamten Cluster konfigurieren, verwendet GKE den Wert für die ComputeClass. Wenn in der ComputeClass kein Wert für diese Einstellung angegeben ist, verwendet GKE stattdessen den Standardwert auf Clusterebene.
Standardeinstellungen auf Clusterebene mit einer Konfigurationsdatei
Wenn Sie die automatische Knotenbereitstellung aktivieren, können Sie mit einer YAML-Konfigurationsdatei clusterweite Standardeinstellungen für automatisch erstellte Knotenpools angeben. In einer einzelnen Konfigurationsdatei können mehrere Einstellungen festgelegt werden. Einige erweiterte Konfigurationen (z. B. Einstellungen für die automatische Reparatur) können nur mithilfe einer Konfigurationsdatei angegeben werden.
Die folgende Beispielkonfigurationsdatei aktiviert automatische Knotenreparaturen und automatische Upgrades für alle neuen automatisch erstellten Knotenpools:
management: autoRepair: true autoUpgrade: true
In der folgenden Beispielkonfigurationsdatei werden die clusterweiten Ressourcenlimits für die automatische Knotenbereitstellung festgelegt und mehrere Standardeinstellungen konfiguriert:
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 diskSizeGb: 100
In dieser Konfigurationsdatei werden die folgenden Standardwerte festgelegt:
- Aktiviert automatische Knotenreparaturen und automatische Upgrades für alle neuen automatisch erstellten Knotenpools.
- Aktiviert Secure Boot und Integritätsmonitoring für alle neuen automatisch erstellten Knotenpools.
- Die Größe des Bootlaufwerks wird für neue automatisch erstellte Knotenpools auf 100 GiB festgelegt.
Nachdem Sie die Konfigurationsdatei auf den Cluster angewendet haben, verwendet GKE die Einstellungen in der Datei nur für neue automatisch erstellte Knotenpools im Cluster. Die neuen oder geänderten Einstellungen, die Sie in der Datei angeben, werden nicht auf vorhandene Knotenpools angewendet, die von GKE im Cluster erstellt wurden. Wenn Sie einen Wert aktualisieren, der zuvor für den Cluster festgelegt wurde, verwendet GKE den neuen Wert für alle neuen Knotenpools. Wenn Sie beispielsweise die Standardmaschinenserie zuvor auf N2 festgelegt und den Wert in Ihrer Konfigurationsdatei auf N4 aktualisiert haben, werden für alle neuen Knotenpools N4-Maschinentypen verwendet.
Weitere Informationen zur Verwendung der Konfigurationsdatei auf Clusterebene finden Sie unter Einstellungen mit einer Konfigurationsdatei für die automatische Knotenbereitstellung konfigurieren.
Anwendungsfälle für die automatische Erstellung von Knotenpools
In den folgenden Abschnitten werden einige beliebte Anwendungsfälle und unterstützte Hardware für die automatische Erstellung von Knotenpools beschrieben. Weitere Informationen zu zusätzlichen Anwendungsfällen und unterstützten Konfigurationen finden Sie in der Dokumentation zu Ihrem spezifischen Anwendungsfall.
Auswahl der Maschinenreihe oder des Maschinentyps
Sie können eine Compute Engine-Maschinenserie oder einen Maschinentyp für GKE auswählen, der für automatisch erstellte Knotenpools verwendet werden soll. Dazu haben Sie folgende Möglichkeiten:
- ComputeClasses: Verwenden Sie die
machineFamily
- oder diemachineType
-Prioritätsregeln. - Pod-Spezifikationen: Verwenden Sie für eine Maschinenserie einen Knotenselektor für das Knotenlabel
cloud.google.com/machine-family
. Verwenden Sie für einen Maschinentyp sowohl das Knotenlabelcloud.google.com/machine-family
als auch das Knotenlabelnode.kubernetes.io/instance-type
. Weitere Informationen finden Sie unter Maschinenserie oder Maschinentyp auswählen.
Wenn Sie keine Maschine explizit auswählen, verwendet GKE die E2-Maschinenserie oder einen Maschinentyp, der mit der von Ihrer Arbeitslast angeforderten Hardware kompatibel ist. In GKE werden beispielsweise GPU-Maschinentypen für GPUs und spezielle Maschinen für TPU-Ressourcen verwendet.
Wenn Sie eine Maschinenserie oder einen Maschinentyp anfordern, müssen Sie darauf achten, dass andere Knotenselektoren und Ihre Pod-Ressourcenanforderungen mit der angegebenen Maschine kompatibel sind. Sie können beispielsweise nicht gleichzeitig eine GPU und die N2-Maschinenserie anfordern.
Unterstützte Maschinenserien
Sie können explizit eine beliebige unterstützte Compute Engine-Maschinenserie oder einen beliebigen Maschinentyp in einer ComputeClass oder Arbeitslast anfordern. Die automatische Erstellung von Knotenpools unterstützt die folgenden Maschinenserien nur in bestimmten GKE-Versionen:
- Z3-Maschinenserie: Version 1.29 und höher.
- C4-Maschinenserie:
- 1.28.15-gke.1159000 und höher
- 1.29.10-gke.1227000 und höher.
- 1.30.3-gke.1225000 und höher
- C4A-Maschinenserie:
- 1.28.15-gke.1344000 und höher.
- 1.29.11-gke.1012000 und höher.
- 1.30.7-gke.1136000 und höher.
- 1.31.3-gke.1056000 und höher
- C4D-Maschinenserie: 1.32.3-gke.1717000 und höher.
- N4-Maschinenserie: Version 1.29.3 und höher.
Andere Maschinenserien werden in allen GKE-Versionen unterstützt.
GPU-Auswahl
Sie können GPUs für automatisch erstellte Knotenpools auf eine der folgenden Arten anfordern:
- ComputeClasses:
- Verwenden Sie die Prioritätsregel
gpu
, um die GPUs zu konfigurieren. - Fordern Sie GPU-Ressourcen in den Pods an.
- Verwenden Sie die Prioritätsregel
- Pod-Spezifikationen:
- Konfigurieren Sie clusterweite GPU-Limits für die automatische Knotenbereitstellung.
- Verwenden Sie Knotenselektoren, um die GPUs zu konfigurieren.
- Fordern Sie GPU-Ressourcen in den Pods an.
GKE wählt einen GPU-Maschinentyp aus, der groß genug ist, um die Anzahl der GPUs zu unterstützen. Die Anzahl der ausgewählten GPUs wirkt sich auf die CPU- und Speicherkapazität der Knoten aus.
Cloud TPU-Auswahl
Sie können Cloud TPU-Ressourcen für automatisch erstellte Knotenpools auf eine der folgenden Arten anfordern:
- ComputeClasses: Verwenden Sie die
tpu
-Prioritätsregel, um TPUs zu konfigurieren. Fordern Sie dann dieselbe Anzahl von TPU-Ressourcen in den Pods an. Weitere Informationen finden Sie unter TPUs mit benutzerdefinierten Compute-Klassen bereitstellen. - Pod-Spezifikationen: Clusterweite TPU-Limits konfigurieren. Konfigurieren Sie dann die TPUs mit Knotenselektoren und fordern Sie TPU-Ressourcen in den Pods an. Weitere Informationen finden Sie unter Cloud TPUs konfigurieren.
Sowohl TPU-Slice-Knotenpools mit einem einzelnen Host als auch TPU-Slice-Knotenpools mit mehreren Hosts unterstützen Autoscaling und die automatische Erstellung von Knotenpools. Bei der automatischen Erstellung von Knotenpools erstellt GKE TPU-Slice-Knotenpools mit einem oder mehreren Hosts mit einer TPU-Version und Topologie, die die Anforderungen ausstehender Arbeitslasten erfüllt.
GKE-Versionsanforderungen für Cloud TPU
Die automatische Erstellung von Knotenpools unterstützt die folgenden Cloud TPUs nur in bestimmten GKE-Versionen:
- Cloud TPU v5p:
- 1.28.7-gke.1020000 und höher
- 1.29.2-gke.1035000 und höher
- TPU Trillium: 1.31.1-gke.1146000 und höher.
Andere Cloud TPU-Typen werden in allen GKE-Versionen unterstützt.
Autoscaling für Cloud TPU-Knotenpools
GKE skaliert automatisch oder manuell erstellte Cloud TPU-Knotenpools, die den Cluster-Autoscaler verwenden, auf eine der folgenden Arten:
- TPU-Slice-Knotenpool mit einem einzelnen Host: GKE fügt dem vorhandenen Knotenpool TPU-Knoten hinzu oder entfernt sie. Der Knotenpool kann eine beliebige Anzahl von TPU-Knoten zwischen null und der maximalen Größe des Knotenpools enthalten, wie durch die Autoscaling-Flags
--max-nodes
und--total-max-nodes
bestimmt. Alle TPU-Knoten im Knotenpool haben denselben Maschinentyp und dieselbe Topologie. Weitere Informationen zum Erstellen eines TPU-Slice-Knotenpools mit einem Host finden Sie unter Knotenpool erstellen. - TPU-Slice-Knotenpool mit mehreren Hosts: GKE skaliert den Knotenpool in kleinstmöglichen Schritten von null auf die Anzahl der Knoten, die für die TPU-Topologie erforderlich sind. Bei einem TPU-Knotenpool mit dem Maschinentyp
ct5lp-hightpu-4t
und der Topologie16x16
enthält der Knotenpool beispielsweise immer entweder 64 oder 0 Knoten. GKE skaliert den Knotenpool herunter, wenn sich keine TPU-Arbeitslasten im Knotenpool befinden. Zum Herunterskalieren des Knotenpools entfernt GKE alle geplanten Pods und alle Knoten im Knotenpool. Weitere Informationen zum Erstellen eines TPU-Slice-Knotenpools mit mehreren Hosts finden Sie unter Knotenpool erstellen.
Cloud TPU-Knotenpool konfigurieren
GKE verwendet die Konfiguration in Ihrem Pod oder Ihrer ComputeClass, um die Konfiguration Ihrer TPU-Knoten zu bestimmen. Das folgende Manifest ist ein Beispiel für eine Deployment-Spezifikation, in der TPUs in der Pod-Spezifikation angefordert werden. Wenn die Einstellung für die automatische Knotenbereitstellung auf Clusterebene aktiviert ist, wird durch diese Bereitstellung die automatische Erstellung von Knotenpools ausgelöst. Wenn Sie diese Beispielbereitstellung erstellen, erstellt GKE einen Knotenpool, der einen TPU v4-Slice mit einer 2x2x2-Topologie und zwei ct4p-hightpu-4t
-Maschinen enthält.
apiVersion: apps/v1
kind: Deployment
metadata:
name: tpu-workload
labels:
app: tpu-workload
spec:
replicas: 2
selector:
matchLabels:
app: nginx-tpu
template:
metadata:
labels:
app: nginx-tpu
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
cloud.google.com/reservation-name: my-reservation
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
ports:
- containerPort: 80
In diesem Manifest definieren die folgenden Felder die TPU-Konfiguration:
cloud.google.com/gke-tpu-accelerator
: Die TPU-Version und der Typ. Sie können beispielsweise Folgendes verwenden:- TPU v4 mit tpu-v4-podslice
- TPU v5e mit tpu-v5-lite-podslice.
- TPU v5p mit tpu-v5p-slice.
- TPU Trillium (v6e) mit tpu-v6e-slice.
cloud.google.com/gke-tpu-topology
: Die Anzahl und die physische Anordnung der TPU-Chips in einem TPU-Slice. Weitere Informationen finden Sie unter Topologie auswählen.limits.google.com/tpu
: die Anzahl der TPU-Chips auf der TPU-VM. Die meisten Konfigurationen haben nur einen korrekten Wert. Weitere Informationen finden Sie unter Funktionsweise von TPUs in GKE.cloud.google.com/reservation-name
: Der Name der Kapazitätsreservierung, die zum Abrufen von TPU-Ressourcen verwendet werden soll. Wenn sie weggelassen wird, wird für die Arbeitslast keine Reservierung verwendet.
Die Konfiguration des automatisch erstellten Knotenpools hängt vom TPU-Typ, der TPU-Topologie und der Anzahl der ausgewählten TPU-Chips ab. So sagen Sie den Typ, die Größe und die Konfiguration Ihres Knotenpools voraus:
- Filtern Sie in Topologie auswählen die Tabelle nach Standard für den angegebenen TPU-Typ, z. B. TPU Trillium oder TPU v5e.
- Verwenden Sie die Werte, die Sie zum Identifizieren der Knotenpoolkonfiguration angegeben haben, wie folgt:
gke-tpu-topology
: Suchen Sie in der Tabelle nach der Zeile mit demselben Wert für Topology (Topologie).limits
: Teilen Sie in der Tabelle den Wert von Anzahl der TPU-Chips durch den Wert von Anzahl der VMs. Suchen Sie in der Tabelle nach der Zeile mit demselben Ergebniswert wie dem von Ihnen angegebenen Wert.
Stellen Sie sich beispielsweise ein Szenario vor, in dem Sie tpu-v6e-slice
(TPU Trillium) mit einer 2x4
-Topologie angefordert haben. In diesem Szenario filtern Sie die Tabelle unter Topologie auswählen nach TPU Trillium. Suchen Sie dann die Zeile, die Ihrer angegebenen Konfiguration entspricht:
gke-tpu-topology
: TPU Trillium hat die folgenden Konfigurationen für eine 2x4-Topologie:- Ein TPU-Slice-Knotenpool mit einem Host, der acht TPU-Chips in einer
ct6e-standard-8t
-Instanz hat. - Ein TPU-Slice-Knotenpool mit mehreren Hosts, der acht TPU-Chips auf zwei
ct6e-standard-4t
-Instanzen verteilt hat.
- Ein TPU-Slice-Knotenpool mit einem Host, der acht TPU-Chips in einer
limits
: Da es für TPU Trillium mehrere Optionen für die 2×4-Topologie gibt, hängt der Wert, den Sie im Feldlimits
angeben, vom gewünschten Knotentyp ab:- TPU-Slice-Knotenpool mit einem einzelnen Host: Geben Sie
limits.google.com/tpu: 8
an, um einen Knotenpool mit acht TPU-Chips und einer VM zu erhalten. Alle acht Chips sind mit dieser VM verbunden. - TPU-Slice-Knotenpool mit mehreren Hosts: Geben Sie
limits.google.com/tpu: 4
an, um einen Knotenpool mit acht TPU-Chips und zwei VMs zu erhalten. Jede VM hat vier Chips.
- TPU-Slice-Knotenpool mit einem einzelnen Host: Geben Sie
Auswahl von Spot-VMs
Sie haben folgende Möglichkeiten, Spot-VMs für automatisch erstellte Knotenpools auszuwählen:
- ComputeClasses: Verwenden Sie das Feld
spot
in einer Prioritätsregel. - Pod-Spezifikationen: Verwenden Sie eine Toleranz für das Knotenlabel
cloud.google.com/gke-spot="true"
mit dem EffektNoSchedule
. Fügen Sie einen Knotenselektor für die Knotenlabelscloud.google.com/gke-spot=true
odercloud.google.com/gke-provisioning=spot
hinzu. Alternativ können Sie VMs auf Abruf auswählen, indem Sie das Knotenlabelcloud.google.com/gke-preemptible
in Ihrer Toleranz und Knotenauswahl verwenden. Wir empfehlen jedoch dringend, stattdessen Spot-VMs zu verwenden.
Konfiguration des flüchtigen Speichers
GKE verwendet einen Teil des Knoten-Bootlaufwerks für den sitzungsspezifischen Speicher von Pods. Sie haben folgende Möglichkeiten, die Größe des Bootlaufwerks anzupassen, das GKE für automatisch erstellte Knoten verwendet:
- ComputeClasses: Verwenden Sie die Felder
storage.bootDiskSize
undstorage.bootDiskType
in einer Prioritätsregel. Sie können verschiedene Einstellungen für Bootlaufwerke für verschiedene Compute-Klassen konfigurieren. - Pod-Spezifikationen: Verwenden Sie die Felder
diskSizeGb
unddiskType
in der Konfigurationsdatei auf Clusterebene. Sie können die Größe und den Typ der Boot-Festplatte für einzelne Pods mit dieser Methode nicht steuern.
Weitere Informationen finden Sie unter Benutzerdefinierte Bootlaufwerke.
Wenn Sie die Einstellungen für das Bootlaufwerk nicht explizit ändern, wird standardmäßig ein pd-balanced
-Volume mit einer Kapazität von 100 GiB verwendet.
GKE erstellt einen neuen Knotenpool nur dann, wenn der zuweisbare flüchtige Speicher eines Knotens mit einem angegebenen Bootlaufwerk größer oder gleich dem von einem ausstehenden Pod angeforderten flüchtigen Speicher ist. Wenn der angeforderte flüchtige Speicher größer ist als der zuweisbare flüchtige Speicher eines Knotens, erstellt GKE keinen neuen Knotenpool und der Pod bleibt im Status „Ausstehend“. GKE passt die Größe von Bootlaufwerken nicht dynamisch an Ihre Anfragen für flüchtigen Speicher von Pods an.
Arbeitslasttrennung
Sie können anfordern, dass bestimmte Pods immer auf separaten Knoten von anderen Pods im Cluster ausgeführt werden. GKE verwendet Knotenmarkierungen, um zu verhindern, dass andere Arbeitslasten auf diesen Knoten ausgeführt werden. Sie können die Arbeitslasttrennung in automatisch erstellten Knotenpools auf folgende Arten konfigurieren:
- ComputeClasses: Auf den Knoten, die GKE für eine bestimmte ComputeClass erstellt, können nur Pods ausgeführt werden, die diese ComputeClass auswählen. Sie müssen Ihre Pod-Spezifikationen nicht ändern. Sie können die Pods in einer ComputeClass mithilfe von Affinität und Anti-Affinität zwischen Pods trennen.
- Pod-Spezifikationen: Wenn Sie die automatische Knotenbereitstellung für den Cluster aktivieren, können Sie die Arbeitslasttrennung mithilfe von Feldern in der Pod-Spezifikation konfigurieren. Bei der automatischen Erstellung von Knotenpools kann GKE Knotenpools mit Labels und Markierungen erstellen, wenn alle folgenden Bedingungen erfüllt sind:
- Der Pod verwendet eine Knotenauswahl, um einen benutzerdefinierten Knotenslabelschlüssel und -wert anzufordern. Sie können keine Systemknotenlabels für die Trennung von Arbeitslasten verwenden.
- Der Pod hat eine Toleranz für denselben Knotenlabel-Schlüssel.
- Der Toleranzeffekt ist
NoSchedule
,NoExecute
oder nicht angegeben.
Weitere Informationen zum Konfigurieren dieser Felder und zu Einschränkungen finden Sie unter Arbeitslasttrennung in GKE konfigurieren.
Beschrä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.
Nicht unterstützte Konfigurationen
GKE erstellt keine neuen Knotenpools, die die folgenden Konfigurationen verwenden:
- GKE Sandbox
- Windows-Betriebssysteme
- Autoscaling von lokalen PersistentVolumes
- Knoten, die dedizierte lokale SSDs für den sitzungsspezifischen Pod-Speicher verwenden. GKE kann jedoch neue Knotenpools erstellen, die lokale SSDs für Rohblockspeicher verwenden.
- Knoten, die geänderte Filter für die benutzerdefinierte Planung verwenden.
- Gleichzeitiges Multi-Threading (SMT).
- Performance Monitoring Unit (PMU):
Cluster Autoscaler kann Knoten in vorhandenen Knotenpools skalieren, die diese Konfigurationen verwenden.