Leistung von Autopilot-Pods durch Auswahl einer Maschinenreihe optimieren

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:

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.

  1. 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.

  2. 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.

  1. 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.

  2. 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 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