Auf dieser Seite erfahren Sie, wie Sie Arbeitslasten auf bestimmten Compute Engine-Rechnerreihen platzieren, um die Leistung Ihrer Arbeitslasten in Ihren GKE-Autopilot-Clustern (Google Kubernetes Engine) zu optimieren.
Machen Sie sich mit den folgenden Themen vertraut:
- Compute Engine-Rechnerreihen und Anwendungsfälle
- Anforderungen auf Kernelebene für Ihre Anwendungen
So funktioniert die Auswahl der Maschinenserie
Sie können Ihrer Pod-Spezifikation einen cloud.google.com/machine-family
-Knotenselektor hinzufügen, damit Autopilot diesem Pod bestimmte Compute Engine-Hardware zuweisen kann. Beispiel: Sie können die C3-Maschinenserie für Pods wählen, die mehr CPU-Leistung benötigen, oder die N1-Maschinenserie für Pods, die mehr Arbeitsspeicher benötigen. Autopilot stellt einen der vordefinierten Maschinentypen aus der ausgewählten Maschinenserie bereit, um Ihre Arbeitslast optimal auszuführen.
Neben der optimalen Pod-Leistung bietet die Auswahl einer bestimmten Maschinenserie folgende Vorteile:
Effiziente Knotennutzung: Standardmäßig optimiert Autopilot die Knotenressourcennutzung, indem auf jedem Knoten so viele Pods wie möglich geplant werden, die dieselbe Maschinenserie anfordern. Mit diesem Ansatz wird die Ressourcennutzung auf dem Knoten optimiert, was das Preis-Leistungs-Verhältnis verbessert. Wenn Ihre Arbeitslast auf alle Ressourcen auf dem Knoten zugreifen muss, können Sie sie optional so konfigurieren, dass für jeden Knoten ein Pod angefordert wird.
Skalierbare Arbeitslasten: Sie können Pods so konfigurieren, dass sie auf nicht verwendete Ressourcenkapazitäten auf dem Knoten zugreifen (Burst), indem Sie Ihre Ressourcenlimits höher als Ihre Anfragen festlegen. Weitere Informationen finden Sie unter Pod-Bursting in GKE konfigurieren.
Einen dedizierten Knoten für jeden Pod anfordern
Wenn Sie CPU-intensive Arbeitslasten haben, die einen zuverlässigen Zugriff auf alle Knotenressourcen erfordern, können Sie Ihren Pod optional so konfigurieren, dass Autopilot einen Pod platziert, der eine Maschinenserie auf einem eigenen Knoten anfordert.
Dedizierte Knoten pro Pod werden empfohlen, wenn Sie groß angelegte, CPU-intensive Arbeitslasten ausführen, z. B. KI/ML-Trainings- oder HPC-Batch-Arbeitslasten (High Performance Computing, Hochleistungs-Computing).
Zwischen der Planung mit mehreren Pods und mit einem einzelnen Pod wählen
Anhand der folgenden Informationen können Sie ein Pod-Planungsverhalten auswählen, das Ihren Anforderungen entspricht:
- Wenn Sie Pods haben, die Rechenressourcen mit anderen Pods teilen können, oder die Kosten beim Ausführen von Pods auf spezialisierter Hardware optimieren möchten, verwenden Sie das Standardplanungsverhalten bei mehreren Pods pro Knoten.
- Wenn Sie Pods haben, die zuverlässigen Zugriff auf die vollständigen Knotenressourcen benötigen, oder die Wahrscheinlichkeit von Unterbrechungen durch die gemeinsame Nutzung von Rechenressourcen minimieren möchten, fordern Sie einen dedizierten Knoten pro Pod an.
Preise
Ihnen werden die zugrunde liegende VM und alle angeschlossenen Hardwarekomponenten über die Compute Engine in Rechnung gestellt. Außerdem wird ein Aufschlag für die Autopilot-Knotenverwaltung und -Skalierbarkeit berechnet. Weitere Informationen finden Sie unter GKE-Preise.
Vorbereitung
Führen Sie die folgenden Schritte durch, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe 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
gcloud components update
ab.
- Sie benötigen einen Autopilot-Cluster mit Version 1.30.1-gke.1396000 oder höher. Informationen zum Erstellen eines neuen Clusters finden Sie unter Autopilot-Cluster erstellen.
Maschinenserie auswählen
In diesem Abschnitt erfahren Sie, wie Sie eine bestimmte Compute Engine-Maschinenserie in einem Pod auswählen.
Speichern Sie das folgende Manifest als
machine-series-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 5 memory: "25Gi" limits: cpu: 20 memory: 100Gi
Ersetzen Sie
MACHINE_SERIES
durch die Compute Engine-Maschinenserie für Ihren Pod, z. B.c3
. Eine Liste der unterstützten Werte finden Sie auf dieser Seite unter Unterstützte Maschinenserien.Stellen Sie den Pod bereit:
kubectl apply -f machine-series-pod.yaml
Mit diesem Manifest kann Autopilot die Knotenressourcennutzung optimieren. Dazu werden andere Pods, die dieselbe Maschinenserien wählen, effizient auf demselben Knoten geplant, falls Kapazitäten verfügbar sind.
Lokale SSDs verwenden
Pods, die eine Maschinenserie auswählen, können lokale SSDs für sitzungsspezifischen Speicher verwenden, wenn Sie eine Maschinenserie angeben, die lokale SSDs bietet. Autopilot berücksichtigt bei der Auswahl eines Compute Engine-Maschinentyps für den Pod Anfragen für sitzungsspezifischen Speicherplatz.
Speichern Sie das folgende Manifest als
local-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: local-ssd-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/gke-ephemeral-storage-local-ssd: "true" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 6 memory: "25Gi" ephemeral: "100Gi" limits: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Ersetzen Sie
MACHINE_SERIES
durch eine unterstützte Maschinenserie, die auch lokale SSDs unterstützt. Wenn die angegebene Maschinenserie lokale SSDs nicht unterstützt, schlägt die Bereitstellung mit einem Fehler fehl.Stellen Sie den Pod bereit:
kubectl apply -f local-ssd-pod.yaml
Einen dedizierten Knoten für einen Pod anfordern
Wenn Ihr Pod bestimmte Leistungsanforderungen hat, z. B. einen zuverlässigen Zugriff auf alle Ressourcen Ihres Knotens, können Sie einen speziellen Knoten für jeden Pod anfordern. Geben Sie dazu den Knotenselektor cloud.google.com/compute-class: Performance
zusammen mit dem Knotenselektor für die Maschinenserie an. Dadurch wird Autopilot angewiesen, Ihren Pod auf einem neuen Knoten zu platzieren, der die angegebene Maschinenserie verwendet und speziell für diesen Pod vorgesehen ist.
Dieser Knotenselektor verhindert auch, dass Autopilot andere Pods auf diesem Knoten plant.
Speichern Sie das folgende Manifest als
dedicated-node-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: dedicated-node-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/compute-class: Performance containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
Ersetzen Sie
MACHINE_SERIES
durch eine unterstützte Maschinenserie, die auch die Planung eines Pods pro Knoten unterstützt. Wenn die angegebene Maschinenserie die Planung von einem Pod pro Knoten nicht unterstützt, schlägt die Bereitstellung fehl.Stellen Sie den Pod bereit:
kubectl apply -f dedicated-node-pod.yaml
Wenn Sie dieses Manifest bereitstellen, tut Autopilot Folgendes:
- Es sorgt dafür, dass der bereitgestellte Pod wenigstens die Mindestressourcen für den leistungsoptimierten Knoten anfordert.
- Es berechnet die Gesamtressourcenanfragen des bereitgestellten Pods und aller DaemonSets im Cluster.
- Es stellt einen Knoten bereit, der von der ausgewählten Maschinenserie unterstützt wird.
- Es modifiziert das Pod-Manifest mit einer Kombination aus Knotenselektoren und Toleranzen, damit der Pod sicher auf einem eigenen Knoten ausgeführt wird.
Unterstützte Maschinenserien
Die machine-family
-Auswahl unterstützt die folgenden Maschinenserien:
(immer im Paket enthalten) |
Einen Vergleich dieser Maschinenserien und ihrer Anwendungsfälle finden Sie unter Maschinenserienvergleich in der Compute Engine-Dokumentation.
Kompatibilität mit anderen GKE-Funktionen
Sie können Pods verwenden, die Maschinenserien mit den folgenden GKE-Funktionen auswählen:
- Spot-Pods
- Pods mit erweiterter Laufzeit (nur mit dedizierten Knoten pro Pod)
- Arbeitslasttrennung
- Kapazitätsreservierungen
- Rabatte für zugesicherte Nutzung
Spot-Pods und Pods mit verlängerter Laufzeit schließen sich gegenseitig aus. In GKE werden höhere Mindestressourcenanforderungen für dedizierte Pods pro Knoten nicht erzwungen, auch wenn die Arbeitslasttrennung verwendet wird.
So wählt GKE einen Maschinentyp aus
Um einen Maschinentyp in der angegebenen Maschinenserie auszuwählen, berechnet GKE die Gesamt-CPU, den Gesamtarbeitsspeicher und die gesamten Pod-Anfragen für flüchtigen Speicher und alle DaemonSets, die auf dem neuen Knoten ausgeführt werden. In GKE werden diese Werte auf den nächsten verfügbaren Compute Engine-Maschinentyp aufgerundet, der alle diese Gesamtwerte unterstützt.
Beispiel 1: Eine Bereitstellung mit vier Replicas, bei der die C3D-Maschinenserie ausgewählt wird. Sie fordern keine dedizierten Knoten pro Pod an. Die Ressourcenanfragen der einzelnen Replikate sind:
- 500m vCPU
- 1 GiB Arbeitsspeicher
Autopilot platziert alle Pods auf einem Knoten, der vom Maschinentyp
c3d-standard-4
mit 4 vCPUs und 16 GB Arbeitsspeicher unterstützt wird.Beispiel 2: Angenommen, für einen Pod wird die Maschinenserie
C3D
und lokaler SSD als sitzungsspezifischer Speicher ausgewählt. Sie fordern einen dedizierten Knoten für den Pod an. Die Gesamtzahl der Ressourcenanfragen, einschließlich DaemonSets, ist:- 12 vCPU
- 50 GiB Arbeitsspeicher
- 200 GiB sitzungsspezifischer Speicher
Autopilot platziert den Pod auf einem Knoten, der den Maschinentyp
c3d-standard-16-lssd
mit 16 vCPUs, 64 GiB Arbeitsspeicher und 365 GiB lokaler SSD-Kapazität verwendet.
Nächste Schritte
- Informationen zu den Compute-Optionen, die Autopilot für verschiedene Anwendungsfälle bietet, finden Sie unter Compute-Klassen in Autopilot.
- GPU-basierte Arbeitslasten in Autopilot bereitstellen.