Google Kubernetes Engine (GKE) kann Knotenpools in Ihren Clustern automatisch anhand der Konfiguration Ihrer Arbeitslasten erstellen und verwalten. In diesem Dokument wird beschrieben, wie die automatische Erstellung von Knotenpools funktioniert, welche Skalierungsparameter und welches Standardverhalten es gibt und wie Sie die Skalierbarkeit verbessern können. Dieses Dokument richtet sich an Clusteradministratoren, die die Kosten für die manuelle Infrastrukturverwaltung in ihren Clustern im Standardmodus reduzieren 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 unter GKE Autopilot – Übersicht.
Was ist die automatische Erstellung von Knotenpools?
In GKE sind Knotenpools logische Gruppen von Knoten. Alle Knoten in einem Knotenpool haben dieselbe Konfiguration wie alle anderen Knoten in diesem Knotenpool. Die automatische Erstellung von Knotenpools ist ein Mechanismus zur automatischen Skalierung der Infrastruktur, 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 von Cluster Autoscaler in GKE, mit dem Knoten in einzelnen Knotenpools automatisch skaliert werden.
Die automatische Erstellung von Knotenpools ist so konzipiert, dass GKE leere Knotenpools automatisch herunterskalieren und aus Ihrem Cluster entfernen kann. 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 Ihr Anwendungsfall eine Mindestanzahl von Knoten erfordert, die immer in Ihrem Cluster ausgeführt werden, 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 mithilfe einer Knotenauswahl auswählen. Wir empfehlen diese Methode, da Sie damit gängige Knotenkonfigurationen zentral definieren können, die von mehreren Arbeitslasten verwendet werden können.
- Verwenden Sie Knotenauswahl oder Knotenaffinität, um bestimmte GKE-Knotenlabels in Pod-Spezifikationen anzufordern.
GKE konfiguriert neue Knotenpools anhand von Parametern wie den folgenden:
- Ressourcenanfragen für CPU, Arbeitsspeicher und sitzungsspezifischen Speicher in Ihren Pods und Containern, einschließlich aller Pods, die von DaemonSets verwaltet werden.
- GPU- und TPU-Anfragen in Pod-Spezifikationen oder in ComputeClasses.
- Hardwareanforderungen wie Maschinentypen oder Bootlaufwerktypen in den Spezifikationen ausstehender Pods oder in ComputeClasses.
- Toleranzen in den Spezifikationen ausstehender Pods mit übereinstimmenden Knotenauswahlen.
Die 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 so umfangreich sind, dass 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 der Knotenmetadaten
Die GKE konfiguriert auch Knotenmetadaten (wie Labels, Annotationen und Knotenmarkierungen) basierend auf Ihren Arbeitslastanforderungen, wie in den folgenden Beispielen:
- Wenn Sie die N2-Maschinenserie anfordern, fügt GKE jedem Knoten das Knotenlabel
cloud.google.com/machine-family: n2hinzu. - Wenn Sie in Ihrem Pod eine ComputeClass auswählen, fügt GKE ein Knotenlabel hinzu, wobei der Schlüssel
cloud.google.com/compute-classauf den Namen dieser ComputeClass festgelegt ist. Wenn Ihr Pod sowohl eine Toleranz als auch eine Knotenauswahl für dasselbe Knotenlabel hat, fügt GKE den automatisch erstellten Knoten Knotenmarkierungen für diese Toleranzen hinzu.
Automatisch erstellte Knotenpools löschen
Mit der automatischen 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, wird der Knotenpool von Cluster Autoscaler schrittweise herunterskaliert. Wenn möglich, beendet GKE per Drain nicht ausgelastete Knoten im Knotenpool, 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 Cluster Autoscaler Knotenpools herunterskaliert, finden Sie unter Funktionsweise von Cluster Autoscaler.
GKE-Skalierungseinstellungen
Die folgenden Einstellungen gelten, wenn GKE Ihre Infrastruktur automatisch skaliert:
- Verschwendung von Rechenressourcen reduzieren: GKE verwendet die Ressourcenkapazität vorhandener automatisch erstellter Knotenpools in Ihrem Cluster, um den Maschinentyp zu bestimmen, der für neue Knotenpools verwendet werden soll. Wenn die Größe Ihres Clusters zunimmt, verwendet GKE bevorzugt größere Maschinentypen für neue Knotenpools, sodass mehr Pods auf jedem Knoten im Knotenpool ausgeführt werden können.
- Skalierbarkeit und Latenz optimieren: GKE priorisiert immer die Skalierung vorhandener, kompatibler Knotenpools, anstatt neue Knotenpools zu erstellen. Die Stärke dieser Präferenz nimmt mit der Anzahl der unterschiedlichen Knotenpools in Ihrem Cluster zu. Wenn die Anzahl der unterschiedlichen Knotenpools die unterstützten Limits für optimale Latenz und Skalierbarkeit erreicht, GKE die Priorität zum Erstellen neuer Knotenpools aufgehoben.
Diese Prioritäten tragen dazu bei, dass Ihre Cluster die Rechenressourcen in großem Umfang effizient nutzen, wie in den folgenden Beispielszenarien:
- In Clustern mit einer geringen Anzahl von Knotenpools und geringerer 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 neue Knotenpools seltener und verwendet größere Maschinentypen für diese Knotenpools, sodass das Pod-Scheduling fortgesetzt werden kann, während gleichzeitig der Fortschritt in Richtung der Skalierbarkeits- und Latenzlimits des Clusters verlangsamt wird.
Sie können die Mindestgröße der Instanzen, die die GKE für Ihre automatisch erstellten Knotenpools verwendet, manuell steuern. Verwenden Sie dazu eine ComputeClass mit dem Feld priorities.machineFamily und entweder dem Feld priorities.minCores oder dem Feld priorities.minMemoryGb.
Aktivierungsmethoden für die automatische Erstellung von Knotenpools
Die GKE kann automatisch Knotenpools für bestimmte ComputeClasses oder für jede Arbeitslast erstellen, die eine kompatible Konfiguration verwendet, je nachdem, wie Sie Ihren Cluster konfigurieren.
| Aktivierungsmethoden | |
|---|---|
| Arbeitslastebene (empfohlen) | In GKE-Version 1.33.3-gke.1136000 und höher können Sie ComputeClasses verwenden, um die automatische Erstellung von Knotenpools ohne die automatische Knotenbereitstellung auf Clusterebene zu aktivieren. Die GKE erstellt neue Knotenpools nur für Arbeitslasten, die bestimmte ComputeClasses auswählen, für die die automatische Erstellung aktiviert ist. Vorhandene Arbeitslasten im Cluster sind davon nicht betroffen. Auch in GKE-Versionen vor 1.33.3-gke.1136000 sind ComputeClasses die empfohlene Methode, um Infrastruktur für Ihre Arbeitslasten anzufordern und zu konfigurieren. ComputeClasses bieten einzigartige Funktionen und eine flexible Möglichkeit, die Skalierung in Ihrem Cluster zu optimieren. Weitere Informationen finden Sie unter Benutzerdefinierte ComputeClasses. |
| 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. Die GKE kann neue Knotenpools für alle ausstehenden Arbeitslasten im Cluster erstellen. Dazu werden ComputeClasses oder Selektoren in den Pod-Spezifikationen verwendet. |
Diese Konfigurationsmethoden schließen sich nicht gegenseitig aus. Sie können ComputeClasses verwenden, um Knotenpools in Clustern, die die automatische Knotenbereitstellung verwenden, automatisch zu erstellen. Wenn Sie beide Methoden verwenden, um die automatische Erstellung von Knotenpools in einem Cluster zu aktivieren, verwendet GKE die folgende Reihenfolge, um den Wert einer Konfigurationseinstellung für einen Knotenpool zu finden:
- ComputeClass- oder Pod-Spezifikation: Wenn Sie eine Einstellung (z. B. einen Maschinentyp) in einer ComputeClass oder in einer Pod-Spezifikation angeben, verwendet die GKE diese Einstellung.
- Standardeinstellung für die automatische Knotenbereitstellung auf Clusterebene: Wenn eine Einstellung nicht in einer ComputeClass- oder Pod-Spezifikation angegeben ist, prüft die 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.
- Standardwert auf Clusterebene: Wenn eine Einstellung nicht in ComputeClasses, Pod-Spezifikationen oder als Standardwert für die automatische Knotenbereitstellung auf Clusterebene angegeben ist, verwendet die GKE den Standardwert, den Google Cloud für den Cluster festlegt.
Angenommen, GKE versucht, einen Maschinentyp für einen automatisch erstellten Knotenpool zu finden. Die vorherige Reihenfolge gilt so:
- Die GKE prüft, ob in der Pod-Spezifikation oder der ComputeClass des Pods ein Maschinentyp angegeben ist.
- Wenn in der Pod-Spezifikation oder ComputeClass kein Maschinentyp angegeben ist, prüft die GKE, ob Sie einen Standardmaschinentyp für die automatische Knotenbereitstellung im Cluster festgelegt haben.
- Wenn Sie keinen Standardmaschinentyp für die automatische Knotenbereitstellung festgelegt haben, verwendet GKE den Standardmaschinentyp des Clusters.
Wir empfehlen, in den meisten Situationen nur die ComputeClass-Aktivierungsmethode zu verwenden. In den folgenden Abschnitten finden Sie Details zu den einzelnen Konfigurationsmethoden, einschließlich Einschränkungen und Überlegungen.
Aktivierung auf Arbeitslastebene mit ComputeClasses
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 kann Knotenpools nach Bedarf automatisch erstellen. Sie können weiterhin mit den Knotenpools interagieren. Die GKE implementiert nur die von Ihnen konfigurierten Einstellungen oder Einschränkungen.autopilot: Führt die Arbeitslasten, die diese ComputeClass auswählen, im Autopilot-Modus aus. Ähnlich wie bei einem Autopilot-Cluster verwaltet die GKE die Knoten vollständig für Sie und implementiert verschiedene Autopilot-Einschränkungen und -Einstellungen. Wenn Sie das Feldautopilotverwenden, können Sie dieses Dokument überspringen. Weitere Informationen finden Sie unter Autopilot-Modus-Arbeitslasten in Standardclustern.
In Clustern, die GKE-Version 1.33.3-gke.1136000 und höher verwenden, können Sie diese Felder in einer ComputeClass verwenden, ohne die automatische Knotenbereitstellung auf Clusterebene zu aktivieren.
Wenn Sie die automatische Erstellung von Knotenpools in einer ComputeClass konfigurieren, ohne die automatische Knotenbereitstellung für den Cluster zu aktivieren, erstellt GKE neue Knotenpools nur für Arbeitslasten, die die ComputeClass verwenden. Andere Arbeitslasten sind nicht betroffen.
Das folgende ComputeClass-Beispielmanifest 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 das Feature Automatische Knotenbereitstellung für den Cluster mithilfe der Kubernetes Engine API. Mit der automatischen Knotenbereitstellung kann GKE nach Bedarf neue Knotenpools für jede Arbeitslast im Cluster erstellen, basierend auf Pod-Spezifikationen oder ComputeClass-Konfigurationen. 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, auf 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 mithilfe der Google Cloud CLI oder einer YAML-Konfigurationsdatei konfigurieren.
Ressourcenlimits auf Clusterebene mit 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 der Vorgang eines dieser Ressourcenlimits überschreiten würde.
Diese Ressourcenlimits auf Clusterebene sind nur erforderlich, wenn Sie die automatische Knotenbereitstellung im Cluster aktivieren. In Clustern mit GKE-Version 1.33.3-gke.1136000 und höher können Sie die automatische Erstellung von Knotenpools in ComputeClasses verwenden, ohne die automatische Knotenbereitstellung zu aktivieren.
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 Arbeitslastebene: Sie können das Feld
spec.nodePoolConfigund das Feldspec.priorityDefaultsin der ComputeClass-Spezifikation verwenden, um Standardwerte für bestimmte Knoteneinstellungen festzulegen. Diese Standardwerte gelten nur für die Knotenpools, die GKE für diese ComputeClass erstellt. - Standardeinstellungen auf Clusterebene: Sie können Standardwerte für automatisch erstellte Knotenpools festlegen, wenn Sie die automatische Knotenbereitstellung konfigurieren. Standardwerte geben Sie mit der gcloud CLI oder einer YAML-Konfigurationsdatei an.
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 festlegen. Sie können mehrere Einstellungen in einer einzigen Konfigurationsdatei angeben. Einige erweiterte Konfigurationen (z. B. Einstellungen für die automatische Reparatur) können nur mithilfe einer Konfigurationsdatei angegeben werden.
In der folgenden Beispielkonfigurationsdatei werden die automatische Knotenreparatur und das automatische Upgrade für alle neuen automatisch erstellten Knotenpools aktiviert:
management: autoRepair: true autoUpgrade: trueIn 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: 100In dieser Konfigurationsdatei werden die folgenden Standardwerte festgelegt:
- Automatische Knotenreparaturen und automatische Upgrades werden für alle neuen automatisch erstellten Knotenpools aktiviert.
- Aktiviert Secure Boot und Integritätsmonitoring für alle neuen automatisch erstellten Knotenpools.
- Legt die Größe des Bootlaufwerks für alle neuen automatisch erstellten Knotenpools auf 100 GiB fest.
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, gelten nicht für vorhandene Knotenpools, 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 zuvor die Standard-VM-Reihe auf N2 festgelegt haben und den Wert in Ihrer Konfigurationsdatei auf N4 aktualisieren, verwenden alle neuen Knotenpools N4-Maschinentypen.
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 gängige 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 für Ihren spezifischen Anwendungsfall.
Auswahl der Maschinenreihe oder des Maschinentyps
Sie können eine Compute Engine-Maschinenserie oder einen Maschinentyp auswählen, den GKE für automatisch erstellte Knotenpools verwenden soll. Dazu haben Sie folgende Möglichkeiten:
- ComputeClasses: Verwenden Sie die Prioritätsregeln
machineFamilyodermachineType. - Pod-Spezifikationen: Verwenden Sie für eine Maschinenreihe eine Knotenauswahl für das Knotenlabel
cloud.google.com/machine-family. Verwenden Sie für einen Maschinentyp sowohl das Knotenlabelcloud.google.com/machine-familyals auch das Knotenlabelnode.kubernetes.io/instance-type. Weitere Informationen finden Sie unter Maschinenserie oder Maschinentyp auswählen.
Wenn Sie nicht explizit eine Maschine auswählen, verwendet die GKE die E2-Maschinenserie oder einen Maschinentyp, der mit der Hardware kompatibel ist, die Ihre Arbeitslast anfordert. GKE verwendet beispielsweise GPU-Maschinentypen für GPUs und spezialisierte Maschinen für TPU-Ressourcen.
Wenn Sie eine Maschinenserie oder einen Maschinentyp anfordern, müssen Sie darauf achten, dass andere Knotenauswahlen und Ihre Pod-Ressourcenanfragen 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 jede unterstützte Compute Engine-Maschinenserie oder jeden unterstützten Maschinentyp in einer ComputeClass oder Arbeitslast explizit anfordern. Ihre Anfragen können bestimmte Hardwarekonfigurationen enthalten, z. B. die Arm-Architektur.
Die automatische Erstellung von Knotenpools unterstützt die folgenden Maschinenserien nur in bestimmten GKE-Versionen:
| Maschinenserie | Unterstützte GKE-Versionen |
|---|---|
| C4-Maschinenserie |
|
| C4A-Maschinenserie (VMs) |
|
| C4A-Bare-Metal-Instanzen |
|
| C4D-Maschinenserie (VMs) | 1.32.3-gke.1717000 und höher |
| C4D-Bare-Metal-Instanzen | 1.37.0-gke.4713000 und höher |
| C4N-Maschinenserie | 1.36.0-gke.3009002 und höher |
| N4-Maschinenserie | 1.29.3 und höher |
| N4A-Maschinenserie | 1.34.1-gke.3403001 und höher |
| N4D-Maschinenserie |
|
| Z3-Maschinenserie | 1.29 und höher |
| Z4D-Maschinenserie | 1.36.3-gke.1244000 und höher |
| Z4M-Maschinenserie | 1.37.0-gke.4713000 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.
Die 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 Arbeitsspeicherkapazität der Knoten aus.
GKE-Versionsanforderungen für GPUs
- G4-Maschinenserie: 1.34.1-gke.1829001 und höher.
- A4X-Maschinenserie: 1.33.4-gke.1036000 und höher.
- A3 Ultra-Maschinenserie: 1.31.4-gke.1183000 und höher.
Cloud TPU-Auswahl
Sie können Cloud TPU-Ressourcen für automatisch erstellte Knotenpools auf eine der folgenden Arten anfordern:
- ComputeClasses: Verwenden Sie die Prioritätsregel
tpu, 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: Konfigurieren Sie clusterweite TPU-Limits. Verwenden Sie dann Knotenselektoren, um die TPUs zu konfigurieren und TPU-Ressourcen in den Pods anzufordern. 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. Für die automatische 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:
- TPU v3: 1.31.0 und höher.
- TPU v5 und TPU v4: 1.29.0 und höher.
- TPU Trillium: 1.32.0 und höher.
- Ironwood (TPU7x): 1.34.1-gke.2541000 oder höher.
Andere Cloud TPU-Typen werden in allen GKE-Versionen unterstützt. Weitere Informationen zu den verfügbaren GKE-Versionen für TPUs finden Sie unter TPU-Verfügbarkeit in GKE prüfen.
Autoscaling für Cloud TPU-Knotenpools
Die GKE skaliert automatisch oder manuell erstellte Cloud TPU-Knotenpools, die 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-nodesund--total-max-nodesbestimmt. 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 TPU-Slice-Knotenpool mit einem Host 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-4tund der Topologie16x16hat der Knotenpool beispielsweise immer entweder 64 Knoten oder null Knoten. GKE skaliert den Knotenpool herunter, wenn sich keine TPU-Arbeitslasten im Knotenpool befinden. Um den Knotenpool herunterzuskalieren, entfernt GKE alle geplanten Pods und alle Knoten im Knotenpool. Weitere Informationen zum Erstellen eines TPU-Slice-Knotenpools mit mehreren Hosts finden Sie unter TPU-Slice-Knotenpool mit mehreren Hosts erstellen.
Cloud TPU-Knotenpoolkonfiguration
Die 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, die TPUs in der Pod-Spezifikation anfordert. Wenn die Einstellung für die automatische Knotenbereitstellung auf Clusterebene aktiviert ist, löst dieses Deployment die automatische Erstellung von Knotenpools aus. Wenn Sie dieses Deployment-Beispiel erstellen, erstellt GKE einen Knotenpool, der ein 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
template:
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
containers:
- name: tpu-job
image: us-docker.pkg.dev/cloud-tpu-images/jax-ai-image/tpu:latest
ports:
- containerPort: 8431 # Port to export TPU runtime metrics, if supported.
securityContext:
privileged: true # Required for GKE versions earlier than 1.28 to access TPUs.
command:
- bash
- -c
- |
python -c 'import jax; print("Total TPU chips:", jax.device_count())'
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 TPU-Typ. Verwenden Sie beispielsweisetpu7x-standard-4tfür Ironwood (TPU7x).cloud.google.com/gke-tpu-topology: Die Topologie mit der Anzahl und der physischen Anordnung der TPU-Chips in einem TPU-Slice. Verwenden Sie zum Beispiel2x2x2.limits.google.com/tpu: die Anzahl der TPU-Chips pro VM. Wenn Sie beispielsweisetpu7x-standard-4tverwenden, beträgt die Anzahl der TPU-Chips pro VM4.
Spot-VM-Auswahl
Sie haben folgende Möglichkeiten, Spot-VMs für automatisch erstellte Knotenpools auszuwählen:
- ComputeClasses: Verwenden Sie das Feld
spotin 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 eine Knotenauswahl für die Knotenlabelscloud.google.com/gke-spot=trueodercloud.google.com/gke-provisioning=spothinzu. Alternativ können Sie VMs auf Abruf auswählen, indem Sie das Knotenlabelcloud.google.com/gke-preemptiblein Ihrer Toleranz und Knotenauswahl verwenden. Wir empfehlen jedoch dringend Spot-VMs.
Konfiguration des sitzungsspezifischen Speichers
GKE verwendet einen Teil des Knoten-Bootlaufwerks für den sitzungsspezifischen Pod-Speicher. Sie können die Größe des Bootlaufwerks, das die GKE für automatisch erstellte Knoten verwendet, auf eine der folgenden Arten anpassen:
- ComputeClasses: Verwenden Sie die Felder
storage.bootDiskSizeundstorage.bootDiskTypein einer Prioritätsregel. Sie können für verschiedene ComputeClasses unterschiedliche Einstellungen für das Bootlaufwerk konfigurieren. - Pod-Spezifikationen: Verwenden Sie die Felder
diskSizeGbunddiskTypein der Konfigurationsdatei auf Clusterebene. Mit dieser Methode können Sie die Größe und den Typ des Bootlaufwerks für einzelne Pods 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 sitzungsspezifische Speicher eines Knotens mit einem festgelegten Bootlaufwerk größer oder gleich dem von einem ausstehenden Pod angeforderten sitzungsspezifischen Speicher ist. Wenn die Anfrage für flüchtigen Speicher größer ist als der zuweisbare flüchtige Speicher eines Knotens, erstellt GKE keinen neuen Knotenpool und der Pod bleibt im Status „Ausstehend“. Die GKE passt die Größe von Bootlaufwerken nicht dynamisch an die Anfragen für sitzungsspezifischen Speicher Ihrer 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 Weise 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 innerhalb 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 Knotenlabelschlüssel und -wert anzufordern. Sie können Systemknotenlabels nicht für die Trennung von Arbeitslasten verwenden.
- Der Pod hat eine Toleranz für denselben Knotenlabelschlüssel.
- Der Toleranzeffekt ist
NoSchedule,NoExecuteoder nicht angegeben.
Weitere Informationen zum Konfigurieren dieser Felder und zu Einschränkungen finden Sie unter Arbeitslasttrennung in GKE konfigurieren.
Beschränkungen
- Alle Einschränkungen von 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 Arbeitslasttrennung oder die Verwendung mehrerer ComputeClasses, erhöht diese Anzahl. 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
Die 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 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.
Nächste Schritte
- Automatische Erstellung von Knotenpools konfigurieren
- Übersicht über Cluster-Autoscaling
- Cluster Autoscaler konfigurieren
- Cluster Autoscaler-Sichtbarkeit
- Arbeitslasttrennung in GKE verwenden
- Probleme mit benutzerdefinierten ComputeClasses beheben
- Cluster mit automatischer Knotenbereitstellung im Cluster Toolkit bereitstellen