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 Themen vertraut:

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.

  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.

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

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

  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:

(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 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