Arbeitslasten im Autopilot-Modus in Standardclustern ausführen

Clusteradministratoren und Anwendungsoperatoren können die Vorteile von Google Kubernetes Engine (GKE) Autopilot wie Preise und vorkonfigurierte Einstellungen in Clustern im Standardmodus nutzen. In diesem Dokument wird beschrieben, wie Sie ComputeClasses verwenden, um eine Autopilot-Arbeitslast in einem Standardcluster bereitzustellen. Sie sollten mit den folgenden Konzepten vertraut sein:

Autopilot-ComputeClasses

GKE bietet benutzerdefinierte Kubernetes-Ressourcen namens ComputeClasses , die wie alle anderen Kubernetes-Ressourcen in Ihrem Cluster bereitgestellt werden können. Eine ComputeClass definiert eine Liste von Knotenkonfigurationen wie Maschinentypen oder Spot-VMs. Sie können ComputeClasses in Ihren Arbeitslasten auswählen. Dadurch wird GKE mitgeteilt, dass alle neuen Knoten eine der Konfigurationen in dieser Liste verwenden sollen.

Wenn eine Arbeitslast eine ComputeClass auswählt, bei der das Feld autopilot aktiviert ist, führt GKE die Pods im Autopilot-Modus aus. Die von GKE erstellten Knoten werden von Google verwaltet und enthalten viele der Standardeinstellungen für Autopilot-Funktionen und -Sicherheit. Weitere Informationen zu den Auswirkungen der Ausführung einer Autopilot-Arbeitslast in Ihren Standardclustern, einschließlich der Unterschiede, die beim Bereitstellen dieser Arbeitslasten auftreten können, finden Sie unter Informationen zu Arbeitslasten im Autopilot-Modus in GKE Standard.

Typen von Autopilot-ComputeClasses

GKE bietet integrierte Autopilot-ComputeClasses, die Sie für die meisten Arbeitslasten für allgemeine Zwecke verwenden können. Sie können auch eine neue oder vorhandene benutzerdefinierte ComputeClass für den Autopilot-Modus konfigurieren. Der Typ der verwendeten Autopilot-ComputeClass hängt davon ab, ob Ihre Arbeitslasten bestimmte Hardware benötigen:

  • Arbeitslasten für allgemeine Zwecke: Verwenden Sie eine der integrierten Autopilot ComputeClasses, die Pods auf der containeroptimierten Computing-Plattform platzieren.
  • Arbeitslasten, die bestimmte Hardware erfordern: Aktivieren Sie den Autopilot-Modus für eine beliebige benutzerdefinierte ComputeClass, stellen Sie diese ComputeClass im Cluster bereit und wählen Sie sie in Ihren Arbeitslasten aus.

Weitere Informationen zu diesen Optionen, wann sie verwendet werden sollten und zu den Preisen für jede Option finden Sie unter Hardwareauswahl in Autopilot-ComputeClasses.

Preise

Die GKE Autopilot-Preise gelten für die Arbeitslasten und Knoten, die eine Autopilot-ComputeClass verwenden. Das geltende Preismodell hängt von der ComputeClass-Prioritätsregel ab, die GKE zum Erstellen von Knoten für Ihre Arbeitslasten verwendet. Weitere Informationen finden Sie unter Preise in "Informationen zu Arbeitslasten im Autopilot-Modus in GKE Standard".

Hinweis

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, installieren und dann initialisieren Sie die gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem gcloud components update Befehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.

Voraussetzungen

  • Auf Ihrem Cluster muss eine der folgenden GKE-Versionen ausgeführt werden:

    • Wenn Sie Autopilot in ComputeClasses verwenden möchten, muss auf dem Cluster Version 1.34.1-gke.1829001 oder höher ausgeführt werden.
    • Wenn Sie podFamily-Prioritätsregeln in benutzerdefinierten Autopilot-ComputeClasses verwenden möchten, muss auf dem Cluster Version 1.35.2-gke.1485000 oder höher ausgeführt werden.
  • Mindestens ein Knotenpool im Cluster darf keine Knotenmarkierungen haben.

    Dieser Knotenpool ist erforderlich, um GKE Standard-System-Pods auszuführen, die aufgrund der Markierungen, die GKE diesen Knoten hinzufügt, nicht auf Autopilot-Knoten in Standardclustern ausgeführt werden können.

  • Shielded GKE-Knoten sind erforderlich und standardmäßig aktiviert.

  • Sie müssen einen VPC-nativer Cluster verwenden.

  • Wenn Sie Kubernetes NetworkPolicies verwenden, muss Ihr Cluster GKE Dataplane V2 verwenden. Standardmäßig verwenden alle neuen Cluster GKE Dataplane V2.

    Wenn Ihr Cluster GKE Dataplane V2 nicht verwendet, müssen Sie die Durchsetzung von Netzwerkrichtlinien deaktivieren.

Beschränkungen

  • Wenn Sie vorhandene ComputeClasses im Cluster für den Autopilot-Modus aktualisieren möchten, müssen Sie diese ComputeClasses mit einer aktualisierten Spezifikation neu erstellen. Weitere Informationen finden Sie unter Autopilot für eine vorhandene benutzerdefinierte ComputeClass aktivieren.
  • Die integrierten Autopilot-ComputeClasses unterstützen das Aktivieren von Confidential GKE Nodes für den gesamten Cluster nicht. Wenn Sie Confidential GKE Nodes für den Cluster aktivieren, bleiben alle neuen Pods, die die integrierten Autopilot-ComputeClasses auswählen, unbegrenzt im Status Pending.
  • Die Durchsetzung von Calico-Netzwerkrichtlinien wird nicht unterstützt. Sie müssen GKE Dataplane V2 verwenden oder die Durchsetzung von Netzwerkrichtlinien deaktivieren.
  • Der Name Ihrer ComputeClass darf nicht mit gke oder autopilot beginnen, da dies reservierte Präfixe sind.

Erforderliche Rollen und Berechtigungen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Kubernetes Engine-Entwickler (roles/container.developer)“ für Ihren Cluster oder Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen von ComputeClasses benötigen . Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Cluster so ändern, dass sie die Autopilot-Anforderungen erfüllen

Sie können in der Google Cloud Console prüfen, ob Ihr Standardcluster alle Anforderungen für die Ausführung von Arbeitslasten im Autopilot-Modus erfüllt. Sie können den Google Cloud Cluster auch in derConsole so ändern, dass er diese Anforderungen erfüllt.

Vorhandenen Cluster ändern

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf.

    Zur Seite "Kubernetes-Cluster"

  2. Klicken Sie in der Zeile für den Cluster, den Sie ändern möchten, auf Weitere Aktionen > Bearbeiten. Die Seite Clusterdetails wird geöffnet.

  3. Suchen Sie im Abschnitt Clustergrundlagen den Abschnitt Kompatibilität mit Autopilot-Compute-Klasse.

    Wenn in diesem Abschnitt Aktiviert angezeigt wird, ist der Cluster bereits mit Autopilot kompatibel. Fahren Sie mit dem Abschnitt Autopilot-ComputeClass in einer Arbeitslast auswählen fort.

  4. Wenn im Abschnitt Kompatibilität mit Autopilot-Compute-Klasse die Option Deaktiviert angezeigt wird, klicken Sie auf Kompatibilität mit Autopilot-Compute-Klasse bearbeiten.

    Wenn dieser Abschnitt nicht bearbeitet werden kann, verwendet Ihr Cluster eine dauerhafte Einstellung, die mit dem Autopilot-Modus nicht kompatibel ist. Sie können Cluster beispielsweise nach der Clustererstellung nicht mehr VPC-nativ machen. Wenn Sie nicht mit dem Abschnitt Kompatibilität mit Autopilot-Compute-Klasse interagieren können, müssen Sie einen neuen Cluster erstellen.

  5. Prüfen Sie im daraufhin geöffneten Bereich Kompatibilität mit Autopilot-Compute-Klasse die Clustereinstellungen, die geändert werden müssen, um die Anforderungen des Autopilot-Modus zu erfüllen.

  6. Klicken Sie auf Autopilot-Compute-Klasse aktivieren. GKE ändert den Cluster nach Bedarf.

Neuen Cluster ändern

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster erstellen auf.

    Zur Seite „Kubernetes-Cluster erstellen“

  2. Suchen Sie auf der Seite Clustergrundlagen den Abschnitt Mehr Bereitstellungsoptionen mit der Autopilot-Compute-Klasse. In diesem Abschnitt werden die Clustereinstellungen angezeigt, die geändert werden müssen, um die Anforderungen des Autopilot-Modus zu erfüllen.

  3. Klicken Sie auf Autopilot-Compute-Klasse aktivieren. GKE ändert den Cluster nach Bedarf.

  4. Konfigurieren Sie weitere Clustereinstellungen nach Bedarf. Wenn Sie eine Einstellung ändern, die den Cluster mit Autopilot inkompatibel macht, wird eine Warnmeldung angezeigt.

Autopilot-ComputeClass in einer Arbeitslast auswählen

Sie können eine Arbeitslast im Autopilot-Modus in Ihrem Standardcluster ausführen, indem Sie eine ComputeClass auswählen, die den Autopilot-Modus verwendet. Wählen Sie eine der folgenden Optionen aus, um eine Arbeitslast im Autopilot-Modus auszuführen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Arbeitslasten von GKE auf.

    Zu Arbeitslasten

  2. Klicken Sie auf Bereitstellen oder Job erstellen. Die Seite zum Erstellen von Arbeitslasten für ein Deployment oder einen Job wird angezeigt.

  3. Wählen Sie im Abschnitt Knoten die Option Autopilot-Compute-Klasse aus.

  4. Wählen Sie im Abschnitt Compute-Klasse auswählen in der Drop-down-Liste Compute-Klasse eine ComputeClass aus, die den Autopilot-Modus verwendet. Diese ComputeClass kann eine der folgenden sein:

  5. Konfigurieren und erstellen Sie die Arbeitslast.

kubectl-Befehlszeile

Wenn Sie eine Autopilot-ComputeClass in einer Arbeitslast auswählen möchten, verwenden Sie einen Knotenselektor für das cloud.google.com/compute-class Label. Dies ist dasselbe Label, das Sie zum Auswählen einer anderen ComputeClass in GKE verwenden. In den folgenden Schritten wird gezeigt, wie Sie ein Beispiel-Deployment erstellen, das eine ComputeClass auswählt, und prüfen, ob die Pods im Autopilot-Modus ausgeführt werden:

  1. Speichern Sie das folgende Beispiel-Deployment als autopilot-cc-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

    Ersetzen Sie COMPUTE_CLASS durch den Namen der zu verwendenden Compute-Klasse. Dieser Wert kann einer der folgenden sein:

  2. Arbeitslast bereitstellen:

    kubectl apply -f autopilot-cc-deployment.yaml
    

Benutzerdefinierte Autopilot-ComputeClass konfigurieren

Sie können benutzerdefinierte ComputeClasses für die Verwendung von Autopilot konfigurieren. Verwenden Sie eine benutzerdefinierte Autopilot-ComputeClass in folgenden Situationen:

  • Ihre Arbeitslasten erfordern bestimmte Hardware, um optimal ausgeführt zu werden, z. B. GPUs oder eine bestimmte Compute Engine-Maschinenserie.
  • Sie möchten Knoteneinstellungen wie Zonen oder Markierungen anpassen und gleichzeitig die containeroptimierte Computing-Plattform von Autopilot verwenden.

Wenn Ihre Arbeitslasten diese Anforderungen nicht erfüllen, empfehlen wir, stattdessen eine der integrierten Autopilot-ComputeClasses zu verwenden. Informationen zum Auswählen einer integrierten Autopilot-ComputeClass finden Sie im vorherigen Abschnitt Autopilot-ComputeClass in einer Arbeitslast auswählen.

Neue benutzerdefinierte Autopilot-ComputeClass erstellen

  1. Speichern Sie eines der folgenden Beispielmanifeste für ComputeClass:

    • Bestimmte Maschinen auswählen:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: n4-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - machineFamily: n4
          spot: true
          minCores: 16
        - machineFamily: n4
          spot: true
        - machineFamily: n4
          spot: false
        activeMigration:
          optimizeRulePriority: true
      

      Dieses Manifest enthält die folgenden Felder:

      • autopilot: Aktiviert den Autopilot-Modus für die ComputeClass. Wenn Sie dieses Feld in einer ComputeClass angeben, die Sie in einem Autopilot-Cluster bereitstellen, wird es von GKE ignoriert.
      • priorities: Definiert ein Array mit drei verschiedenen Konfigurationen der N4-Maschinenfamilie.
      • activeMigration: Ermöglicht GKE, Pods zu Konfigurationen zu migrieren, die in der Liste der Prioritäten weiter oben stehen, wenn Ressourcen verfügbar werden.
    • Containeroptimierte Computing-Plattform mit Änderungen verwenden:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: general-purpose-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - podFamily: general-purpose
        priorityDefaults:
          location:
            zones: ['us-central1-a','us-central1-b','us-central1-f']
      

      Dieses Manifest enthält die folgenden Felder:

      • autopilot: Aktiviert den Autopilot-Modus für die ComputeClass. Wenn Sie dieses Feld in einer ComputeClass angeben, die Sie in einem Autopilot-Cluster bereitstellen, wird es von GKE ignoriert.
      • priorities.podFamily: Verwendet die podFamily Prioritätsregel, um Pods auf der containeroptimierten Computing Plattform von Autopilot auszuführen.
      • priorityDefaults.location: Definiert die Zonen, in denen GKE Knoten für Pods erstellen soll, die die ComputeClass verwenden.
  2. ComputeClass bereitstellen:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ersetzen Sie PATH_TO_COMPUTECLASS_MANIFEST durch den Pfad zum ComputeClass-Manifest aus dem vorherigen Schritt.

  3. Prüfen Sie, ob die ComputeClass vorhanden ist:

    kubectl get computeclasses
    

    Die Ausgabe sieht etwa so aus:

    NAME                  AGE
    n4-class              3s
    

Autopilot für eine vorhandene benutzerdefinierte ComputeClass aktivieren

Sie können Autopilot in vorhandenen benutzerdefinierten ComputeClasses aktivieren, die sich in einem Standardcluster befinden. Das Aktivieren von Autopilot in einer ComputeClass, die sich in einem Autopilot-Cluster befindet, hat keine Auswirkungen, da der gesamte Cluster den Autopilot-Modus verwendet.

Nachdem Sie Autopilot für eine vorhandene ComputeClass aktiviert haben, verwendet GKE Autopilot, um neue Pods auszuführen, die die ComputeClass auswählen. Wenn Sie vorhandene Pods auf Standardknoten haben, die die Autopilot-ComputeClass auswählen, verwenden diese Pods Autopilot nur, wenn sie neu erstellt werden.

So aktualisieren Sie eine vorhandene benutzerdefinierte ComputeClass für die Verwendung des Autopilot-Modus:

  1. Aktualisieren Sie in einem Texteditor die Manifestdatei für Ihre vorhandene ComputeClass, um das Feld spec.autopilot hinzuzufügen:

    spec:
      autopilot:
        enabled: true
    
  2. Ersetzen Sie die vorhandene ComputeClass-Ressource in der Kubernetes API durch die aktualisierte Spezifikation:

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    Ersetzen Sie PATH_TO_UPDATED_MANIFEST durch den Pfad zu Ihrer aktualisierten Manifestdatei.

  3. Erstellen Sie alle Arbeitslasten neu, die die Compute-Klasse verwenden, um die Erstellung neuer Knoten auszulösen.

Nachdem Sie das aktualisierte Manifest angewendet haben, verwenden alle neuen Knoten, die GKE für diese ComputeClass erstellt, Autopilot. GKE ändert keine vorhandenen Knoten, die vor der Aktualisierung erstellt wurden.

Prüfen, ob Ihre Arbeitslast Autopilot verwendet

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Arbeitslasten von GKE auf.

    Zu Arbeitslasten

  2. Prüfen Sie für Ihre Arbeitslast den Wert in der Spalte Knotentyp. Wenn die Arbeitslast den Autopilot-Modus verwendet, ist dieser Wert Von Autopilot verwaltet.

kubectl-Befehlszeile

Prüfen Sie die Namen der Knoten, auf denen Ihre Pods ausgeführt werden:

kubectl get pods -l=app=hello -o wide

Die Ausgabe sieht etwa so aus:

NAME                       READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
helloweb-79b9f6f75-5wwc9   1/1     Running   0          152m    10.102.1.135   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
helloweb-79b9f6f75-9skb9   1/1     Running   0          4d3h    10.102.0.140   gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6   <none>           <none>
helloweb-79b9f6f75-h7bdv   1/1     Running   0          152m    10.102.1.137   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>

In dieser Ausgabe gibt das Präfix gk3- in der Spalte Knoten an, dass der Knoten von Autopilot verwaltet wird.

Autopilot-ComputeClass standardmäßig anwenden

Sie können eine integrierte oder benutzerdefinierte ComputeClass als Standard-ComputeClass für einen Namespace oder für einen gesamten Cluster festlegen. Die Standard-ComputeClass gilt für alle Pods, die nicht explizit eine andere ComputeClass auswählen. Wenn Sie eine Autopilot-ComputeClass als Standard festlegen, können Sie sicherstellen, dass alle Pods im Autopilot-Modus ausgeführt werden, es sei denn, eine Arbeitslast wählt eine andere Option aus.

Wenn die als Standard festgelegte ComputeClass podFamily-Prioritätsregeln verwendet, können Pods, die keine andere ComputeClass auswählen, als Autopilot-Pods für allgemeine Zwecke ausgeführt werden. Mit dieser Methode können Sie das Pod-basierte Abrechnungsmodell standardmäßig in Ihrem Cluster oder Namespace verwenden. Dies ist nützlich, wenn viele Ihrer Arbeitslasten keine besonderen Hardwareanforderungen haben.

Weitere Informationen finden Sie unter ComputeClasses standardmäßig auf Pods anwenden.

Nächste Schritte