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 Konzepten vertraut:
- Compute Engine-Maschinenserien und Anwendungsfälle
- Anforderungen auf Kernelebene für Ihre Anwendungen
So funktioniert die Auswahl der Maschinenreihe
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.
Damit Ihre Arbeitslast optimal ausgeführt werden kann, stellt Autopilot einen der vordefinierten Maschinentypen aus der von Ihnen ausgewählten Maschinenserie bereit.
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. Dieser Ansatz optimiert die Ressourcennutzung auf dem Knoten, was das Preis-Leistungs-Verhältnis verbessert. Wenn Ihre Arbeitslast Zugriff auf alle Ressourcen auf dem Knoten benötigt, 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 pro Pod planen
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
Verwenden Sie die folgende Anleitung, um ein Pod-Planungsverhalten basierend auf Ihren Anforderungen auszuwählen:
- 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 angehängten Hardwarekomponenten von 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.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem Befehl
gcloud components update
ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
- 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.
Weitere Informationen finden Sie unter Sitzungsspezifischen lokalen SSD-gestützten Speicher mit Autopilot-Clustern verwenden.
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:
c4
ist der Standardwert, wenn keine Maschinenserie angegeben ist und c4
in einer Region verfügbar ist.
Einen Vergleich dieser Maschinenserien und ihrer Anwendungsfälle finden Sie unter Maschinenserienvergleich in der Compute Engine-Dokumentation.
Versionsanforderungen
Die C4D-Maschinenserie ist in den folgenden Versionen und Konfigurationen verfügbar:
- C4D-Maschinentypen ohne lokale SSD: GKE-Version 1.33.0-gke.1439000 und höher.
- C4D-Maschinentypen mit lokaler SSD: GKE-Version 1.33.1-gke.1171000 und höher.
Kompatibilität mit anderen GKE-Funktionen
Pods, die eine Maschinenserie auswählen, können die von dieser Maschinenserie unterstützten GKE-Funktionen verwenden, z. B.:
- Spot-Pods
- Pods mit verlängerter 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. GKE rundet diese Werte auf den nächsten verfügbaren Compute Engine-Maschinentyp auf, der alle diese Summen unterstützt.
Beispiel 1: Angenommen, für eine Bereitstellung mit vier Replikaten wird die Maschinenserie C3D ausgewählt. Sie fordern keine dedizierten Knoten pro Pod an. Die Ressourcenanfragen der einzelnen Replikate sind:
- 500 mCPU (0,5 vCPU)
- 1 GiB Arbeitsspeicher
Autopilot platziert alle vier Pods auf einem Knoten, der vom Maschinentyp
c3d-standard-4
unterstützt wird und 4 vCPUs und 16 GB Arbeitsspeicher hat.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 gesamten Ressourcenanfragen einschließlich DaemonSets sind wie folgt:- 12 vCPU
- 50 GiB Arbeitsspeicher
- 200 GiB sitzungsspezifischer Speicher
Autopilot platziert den Pod auf einem Knoten, der den Maschinentyp
c3d-standard-16-lssd
verwendet. Dieser hat 16 vCPUs, 64 GiB Arbeitsspeicher und 365 GiB lokale SSD-Kapazität.
Nächste Schritte
- Eine Anleitung 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.