Auf dieser Seite wird erläutert, wie die automatische Knotenbereitstellung in Standardclustern von Google Kubernetes Engine (GKE) funktioniert. Mit der automatischen Knotenbereitstellung werden Knoten automatisch skaliert, um die Anforderungen Ihrer Arbeitslasten zu erfüllen.
Mit Autopilot-Clustern müssen Sie keine Knoten manuell bereitstellen oder Knotenpools verwalten, da GKE die Knotenskalierung und -bereitstellung automatisch verwaltet.
Vorteile der automatischen Knotenbereitstellung
Bei der automatischen Knotenbereitstellung wird eine Reihe von Knotenpools für den Nutzer automatisch verwaltet und skaliert. Ohne die automatische Knotenbereitstellung erstellt GKE Cluster Autoscaler nur Knoten aus von Nutzern erstellten Knotenpools. Mit der automatischen Knotenbereitstellung erstellt und löscht GKE automatisch Knotenpools.
Nicht unterstützte Funktionen
Die automatische Knotenbereitstellung erstellt keine Knotenpools, die eines der folgenden Features verwenden. Cluster Autoscaler skaliert jedoch Knoten in vorhandenen Knotenpools mit den folgenden Funktionen:
- GKE Sandbox.
- Windows-Betriebssysteme.
- Steuerung der Reservierungsaffinität.
- Autoscaling von lokalen PersistentVolumes
- Knoten mit lokalen SSDs als flüchtigem Speicher automatisch bereitstellen.
- Automatische Bereitstellung über benutzerdefinierte Planung, die geänderte Filter verwendet.
- Gleichzeitiges Multi-Threading (SMT) konfigurieren.
Funktionsweise der automatischen Knotenbereitstellung
Die automatische Knotenbereitstellung ist ein Mechanismus von Cluster Autoscaler, der nur vorhandene Knotenpools skaliert. Wenn die automatische Knotenbereitstellung aktiviert ist, kann der Cluster Autoscaler die Knotenpools gemäß den Spezifikationen nicht planbarer Pods automatisch erstellen.
Die automatische Knotenbereitstellung erstellt Knotenpools anhand der folgenden Informationen:
- Ressourcenanfragen für CPU, Arbeitsspeicher und flüchtigen Speicher.
- GPU-Anfragen
- Knotenaffinitäten und Labelselektoren der ausstehenden Pods
- Knotenmarkierungen und -toleranzen der ausstehenden Pods
Ressourcenlimits
Für die automatische Knotenbereitstellung und das Cluster-Autoscaling gelten Limits auf den folgenden Ebenen:
- Knotenpoolebene: Automatisch bereitgestellte Knotenpools sind auf 1.000 Knoten beschränkt.
- Clusterebenel:
- Alle für die automatische Bereitstellung festgelegten Limits werden basierend auf der Gesamt-CPU und -Arbeitsspeicherressourcen erzwungen, die in allen Knotenpools verwendet werden, nicht nur auf automatisch bereitgestellten Pools.
- Der Cluster Autoscaler erstellt keine neuen Knoten, wenn dadurch ein definierter Grenzwert überschritten würde. Wenn die Limits bereits überschritten wurden, löscht GKE die Knoten nicht.
Arbeitslasttrennung
Wenn ausstehende Pods mit Knotenaffinitäten und -toleranzen vorhanden sind, können über die automatische Knotenbereitstellung Knoten mit übereinstimmenden Labels und Markierungen bereitgestellt werden.
Knotenpools mit Labels und Markierungen können erstellt werden, wenn alle folgenden Bedingungen erfüllt sind:
- Für einen ausstehenden Pod ist ein Knoten mit einem bestimmten Labelschlüssel und -wert erforderlich.
- Der Pod hat eine Toleranz für eine Markierung mit demselben Schlüssel.
- Die Toleranz gilt für den
NoSchedule
-Effekt, denNoExecute
-Effekt oder alle Effekte.
Eine Anleitung finden Sie unter Arbeitslasttrennung in GKE konfigurieren.
Automatisch bereitgestellte Knotenpools löschen
Wenn sich in einem automatisch bereitgestellten Knotenpool keine Knoten befinden, löscht GKE den Knotenpool. GKE löscht keine Knotenpools, die nicht automatisch bereitgestellt werden.
Unterstützte Maschinentypen
Bei der automatischen Knotenbereitstellung werden die Pod-Anforderungen in Ihrem Cluster berücksichtigt, um festzustellen, welcher Knotentyp am besten zu diesen Pods passt.
Standardmäßig verwendet GKE die E2-Maschinenserie, sofern keine der folgenden Bedingungen zutrifft:
- Die Arbeitslast fordert ein Feature an, das in der E2-Maschinenserie nicht verfügbar ist. Wird z. B. eine GPU von der Arbeitslast angefordert, wird für den neuen Knotenpool die N1-Maschinenserie verwendet.
- Die Arbeitslast fordert TPU-Ressourcen an. Weitere Informationen zu TPUs finden Sie unter Einführung in Cloud TPU.
- Die Arbeitslast verwendet das Label
machine-family
. Weitere Informationen finden Sie unter Benutzerdefinierte Maschinenfamilie verwenden.
Wenn der Pod GPUs anfordert, weist die automatische Knotenbereitstellung einen Maschinentyp zu, der ausreichend groß ist, um die Anzahl der vom Pod angeforderten GPUs zu unterstützen. Die Anzahl der GPUs beschränkt die CPU- und Arbeitsspeicherkapazität des Knotens. Weitere Informationen finden Sie unter GPU-Plattformen.
Unterstützte Knoten-Images
Die automatische Knotenbereitstellung erstellt Knotenpools mit einem der folgenden Knoten-Images:
- Container-Optimized OS (
cos_containerd
). - Ubuntu (
ubuntu_containerd
).
Unterstützte Beschleuniger für maschinelles Lernen
Die automatische Knotenbereitstellung kann Knotenpools mit Hardwarebeschleunigern wie GPU und Cloud TPU erstellen. Die automatische Knotenbereitstellung unterstützt TPUs in GKE-Version 1.28 und höher.
GPUs
Wenn der Pod GPUs anfordert, weist die automatische Knotenbereitstellung einen Maschinentyp zu, der ausreichend groß ist, um die Anzahl der vom Pod angeforderten GPUs zu unterstützen. Die Anzahl der GPUs beschränkt die CPU- und Arbeitsspeicherkapazität des Knotens. Weitere Informationen finden Sie unter GPU-Plattformen.
Cloud TPUs
GKE unterstützt Tensor Processing Units (TPUs), um ML-Arbeitslasten zu beschleunigen. Sowohl der TPU-Slice-Knotenpool mit einem einzelnen Host als auch der TPU-Slice-Knotenpool mit mehreren Hosts unterstützen Autoscaling und die automatische Bereitstellung.
Mit dem Flag --enable-autoprovisioning
in einem GKE-Cluster erstellt oder löscht GKE TPU-Slice-Knotenpools mit einem oder mehreren Hosts mit einer TPU-Version und Topologie, die die Anforderungen ausstehender Arbeitslasten erfüllt.
Wenn Sie --enable-autoscaling
verwenden, skaliert GKE den Knotenpool basierend auf seinem Typ so:
Einzelner Host TPU-Slice-Knotenpool: 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 --max-nodes und die --total-max-nodes-Flags bestimmt. Wenn der Knotenpool skaliert wird, haben alle TPU-Knoten im Knotenpool 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 64 Knoten. GKE Autoscaling sorgt dafür, dass dieser Knotenpool genau 0 oder 64 Knoten hat. Beim Herunterskalieren entfernt GKE alle geplanten Pods und leert den gesamten Knotenpool auf null. Weitere Informationen zum Erstellen eines TPU-Slice-Knotenpools mit mehreren Hosts finden Sie unter Knotenpool erstellen.
Wenn ein bestimmtes TPU-Slice keine Pods enthält, die ausgeführt werden oder noch geplant werden sollen, skaliert GKE den Knotenpool herunter. TPU-Slice-Knotenpools mit mehreren Hosts werden in kleinstmöglichen Schritten skaliert. TPU-Slice-Knotenpools mit einem Host werden durch das Entfernen einzelner TPU-Slices mit einem einzelnen Host verkleinert.
Wenn Sie die automatische Knotenbereitstellung mit TPUs aktivieren, trifft GKE Skalierungsentscheidungen anhand der in der Pod-Anfrage definierten Werte. Das folgende Manifest ist ein Beispiel für eine Bereitstellungsspezifikation, die zu einem Knotenpool führt, der 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
Dabei gilt:
cloud.google.com/gke-tpu-accelerator
: Die TPU-Version und der Typ. Zum Beispiel TPU v4 mittpu-v4-podslice
oder TPU v5e mittpu-v5-lite-podslice
.cloud.google.com/gke-tpu-topology
TPU-Topologie: Die Anzahl und die physische Anordnung der TPU-Chips in einem TPU-Slice. Beim Erstellen eines Knotenpools und beim Aktivieren der automatischen Knotenbereitstellung wählen Sie die TPU-Topologie aus. Weitere Informationen zu Cloud TPU-Topologien finden Sie unter TPU-Konfigurationen.limit.google.com/tpu
: Die Anzahl der TPU-Chips auf der TPU-VM. Die meisten Konfigurationen haben nur einen korrekten Wert. Beimtpu-v5-lite-podslice
mit2x4
-Topologiekonfiguration gilt jedoch:- Wenn Sie
google.com/tpu = 8
angeben, skaliert die automatische Knotenbereitstellung einen TPU-Slice-Knotenpool mit einem einzelnen Host und fügt einect5lp-hightpu-8t
-Maschine hinzu. - Wenn Sie
google.com/tpu = 4
angeben, erstellt die automatische Knotenbereitstellung einen Knotenpool mit mehreren Hosts von TPU-Slices mit zweict5lp-hightpu-4t
-Maschinen.
- Wenn Sie
cloud.google.com/reservation-name
: Der Name der Reservierung, die die Arbeitslast verwendet. Wenn nichts angegeben ist, verwendet die Arbeitslast keine Reservierung.
Wenn Sie tpu-v4-podslice
festlegen, trifft die automatische Knotenbereitstellung die folgenden Entscheidungen:
Im Pod-Manifest festgelegte Werte | Durch automatische Knotenbereitstellung festgelegt | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
Knotenpooltyp | Knotenpoolgröße | Maschinentyp |
2x2x1 | 4 | TPU-Slice mit einzelnem Host | Flexibel | ct4p-hightpu-4t |
{A}x{B}x{C} | 4 | TPU-Slice mit mehreren Hosts | {A}x{B}x{C}/4 | ct4p-hightpu-4t |
Das Produkt von {A} x {B} x {C} definiert die Anzahl der Chips im Knotenpool. Beispielsweise können Sie eine kleine Topologie von 64 Chips mit Kombinationen wie 4x4x4
definieren. Wenn Sie Topologien mit mehr als 64 Chips verwenden, müssen die Werte, die Sie {A}, {B} und {C} zuweisen, die folgenden Bedingungen erfüllen:
- {A}, {B} und {C} sind entweder kleiner oder gleich vier oder ein Vielfaches von vier.
- Die größte unterstützte Topologie ist
12x16x16
. - Die zugewiesenen Werte entsprechen dem Muster A ≤ B ≤ C. Beispiel:
2x2x4
oder2x4x4
für kleine Topologien.
Wenn Sie tpu-v5-lite-podslice
festlegen, trifft die automatische Knotenbereitstellung die folgenden Entscheidungen:
Im Pod-Manifest festgelegte Werte | Durch automatische Knotenbereitstellung festgelegt | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
Knotenpooltyp | Knotenpoolgröße | Maschinentyp |
1x1 | 1 | TPU-Slice mit einzelnem Host | Flexibel | ct5lp-hightpu-1t |
2x2 | 4 | TPU-Slice mit einzelnem Host | Flexibel | ct5lp-hightpu-4t |
2x4 | 8 | TPU-Slice mit einzelnem Host | Flexibel | ct5lp-hightpu-8t |
2x41 | 4 | TPU-Slice mit mehreren Hosts | 2 (8/4) | ct5lp-hightpu-4t |
4x4 | 4 | TPU-Slice mit mehreren Hosts | 4 (16/4) | ct5lp-hightpu-4t |
4x8 | 4 | TPU-Slice mit mehreren Hosts | 8 (32/4) | ct5lp-hightpu-4t |
4x8 | 4 | TPU-Slice mit mehreren Hosts | 16 (32/4) | ct5lp-hightpu-4t |
8x8 | 4 | TPU-Slice mit mehreren Hosts | 16 (64/4) | ct5lp-hightpu-4t |
8x16 | 4 | TPU-Slice mit mehreren Hosts | 32 (128/4) | ct5lp-hightpu-4t |
16x16 | 4 | TPU-Slice mit mehreren Hosts | 64 (256/4) | ct5lp-hightpu-4t |
-
Der Sonderfall, bei dem der Maschinentyp vom Wert abhängt, den Sie im Feld
google.com/tpu
festgelegt haben. ↩
Wenn Sie den Beschleunigertyp auf tpu-v5-lite-device
festlegen, trifft die automatische Knotenbereitstellung die folgenden Entscheidungen:
Im Pod-Manifest festgelegte Werte | Durch automatische Knotenbereitstellung festgelegt | |||
---|---|---|---|---|
gke-tpu-topology |
limit.google.com/tpu |
Knotenpooltyp | Knotenpoolgröße | Maschinentyp |
1x1 | 1 | TPU-Slice mit einzelnem Host | Flexibel | ct5l-hightpu-1t |
2x2 | 4 | TPU-Slice mit einzelnem Host | Flexibel | ct5l-hightpu-4t |
2x4 | 8 | TPU-Slice mit einzelnem Host | Flexibel | ct5l-hightpu-8t |
Informationen zum Einrichten der automatischen Knotenbereitstellung finden Sie unter TPUs konfigurieren.
Unterstützung für Spot-VMs
Die automatische Knotenbereitstellung unterstützt die Erstellung von Knotenpools auf der Grundlage von Spot-VMs.
Das Erstellen von Knotenpools auf der Grundlage von Spot-VMs wird nur in Betracht gezogen, wenn nicht planbare Pods mit einer Toleranz für die Markierung cloud.google.com/gke-spot="true":NoSchedule
vorhanden sind. Die Markierung wird automatisch auf Knoten in automatisch bereitgestellten Knotenpools angewendet, die auf Spot-VMs basieren.
Sie können die Toleranz mit einer nodeSelector
- oder Knotenaffinitätsregel für die Knotenlabels cloud.google.com/gke-spot="true"
oder cloud.google.com/gke-provisioning=spot
kombinieren (für Knoten mit GKE-Version 1.25.5-gke.2500 oder höher), um sicherzustellen, dass Ihre Arbeitslasten nur auf Knotenpools basierend auf Spot-VMs ausgeführt werden.
Unterstützung für Pods, die flüchtigen Speicher anfordern
Die automatische Knotenbereitstellung unterstützt das Erstellen von Knotenpools, wenn Pods einen flüchtigen Speicher anfordern. Die Größe des in den Knotenpools bereitgestellten Bootlaufwerks ist für alle neu automatisch bereitgestellten Knotenpools konstant. Diese Größe des Bootlaufwerks kann angepasst werden.
Der Standardwert ist 100 GiB. Flüchtiger Speicher mit lokalen SSDs wird nicht unterstützt.
Bei der automatischen Knotenbereitstellung wird ein Knotenpool nur dann bereitgestellt, wenn der zuweisbare flüchtige Speicher eines Knotens mit einem festgelegten 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 alle zuweisbaren Ressourcen, wird mit der automatischen Knotenbereitstellung kein Knotenpool bereitgestellt. Die Laufwerksgröße für Knoten wird nicht dynamisch anhand von Anfragen für flüchtigen Speicher ausstehender Pods konfiguriert.
Einschränkungen der Skalierbarkeit
Für die automatische Knotenbereitstellung gelten die gleichen Einschränkungen wie für den Cluster Autoscaler sowie die folgenden zusätzlichen Einschränkungen:
- Begrenzte Anzahl von getrennten Arbeitslasten
- Bei der automatischen Knotenbereitstellung werden maximal 100 separate Arbeitslasten unterstützt.
- Begrenzte Anzahl von Knotenpools
- Bei der automatischen Knotenbereitstellung wird die Priorität zum Erstellen neuer Knotenpools aufgehoben, wenn die Anzahl der Pools im Cluster 100 erreicht. Zwar können mehr als 100 Knotenpools erstellt werden, aber nur, wenn die Erstellung eines Knotenpools die einzige Möglichkeit ist, einen ausstehenden Pod zu planen.
Nächste Schritte
- Weitere Informationen zum Aktivieren der automatischen Knotenbereitstellung
- Weitere Informationen zu Cluster-Autoscaling