Clusteradministratoren und Anwendungsoperatoren können die Vorteile von Google Kubernetes Engine (GKE) Autopilot, wie Preise und vorkonfigurierte Einstellungen, in Clustern im Standardmodus nutzen. Auf dieser Seite wird beschrieben, wie Sie ComputeClasses verwenden, um eine Autopilot-Arbeitslast in einem Standardcluster bereitzustellen. Sie sollten mit den folgenden Konzepten vertraut sein:
Autopilot-Compute-Klassen
GKE bietet benutzerdefinierte Kubernetes-Ressourcen mit dem Namen ComputeClasses, die wie alle anderen Kubernetes-Ressourcen in Ihrem Cluster bereitgestellt werden können. Eine ComputeClass definiert eine Liste von Knotenkonfigurationen, z. B. Maschinentypen oder Spot-VMs. Sie können Compute-Klassen in Ihren Arbeitslasten auswählen. Dadurch wird GKE mitgeteilt, dass für alle neuen Knoten eine der Konfigurationen in dieser Liste verwendet werden soll.
Wenn für eine Arbeitslast eine ComputeClass ausgewählt wird, für die 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 standardmäßigen Autopilot-Funktions- und Sicherheitseinstellungen. Weitere Informationen zu den Auswirkungen der Ausführung einer Autopilot-Arbeitslast in Ihren Standardclustern, einschließlich der Unterschiede, die Sie bei der Bereitstellung dieser Arbeitslasten möglicherweise bemerken, finden Sie unter Autopilot-Modus-Arbeitslasten in GKE Standard.
Arten von Autopilot-Compute-Klassen
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 die Verwendung des Autopilot-Modus konfigurieren. Welche Art von Autopilot-ComputeClass Sie verwenden, hängt davon ab, ob Ihre Arbeitslasten bestimmte Hardware benötigen:
- Arbeitslasten für allgemeine Zwecke: Verwenden Sie eine der integrierten Autopilot-ComputeClasses, mit denen Pods auf der containeroptimierten Compute-Plattform platziert werden.
- Arbeitslasten, die bestimmte Hardware erfordern: Aktivieren Sie den Autopilot-Modus für eine beliebige benutzerdefinierte Compute-Klasse, stellen Sie diese Compute-Klasse 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 die einzelnen Optionen finden Sie unter Hardwareauswahl in Autopilot ComputeClasses.
Preise
Die Preise für GKE Autopilot gelten für die Arbeitslasten und Knoten, die eine Autopilot-Compute-Klasse verwenden. Das anwendbare Abrechnungsmodell hängt davon ab, ob Sie eine integrierte Autopilot-Compute-Klasse oder eine benutzerdefinierte Autopilot-Compute-Klasse verwenden. Weitere Informationen finden Sie unter Preise im Abschnitt „Informationen zu Autopilot-Modus-Arbeitslasten in GKE Standard“.
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
gcloud components update
ab.
- Verwenden Sie einen GKE-Standardcluster, auf dem Version 1.33.1-gke.1107000 oder höher ausgeführt wird und der im Rapid-Releasekanal registriert ist. Informationen zum Erstellen eines neuen Clusters finden Sie unter Regionalen Cluster erstellen.
- Informationen zu den Anforderungen und Sicherheitsbeschränkungen von Autopilot finden Sie unten. Weitere Informationen finden Sie unter Vordefinierte Einstellungen für Autopilot-Knoten.
Voraussetzungen
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-nativen Cluster verwenden.
Beschränkungen
- Es wird nur der Schnellauslösekanal unterstützt.
- Wenn Sie vorhandene
ComputeClass
-Ressourcen im Cluster so aktualisieren möchten, dass der Autopilot-Modus verwendet wird, müssen Sie die ComputeClass mit einer aktualisierten Spezifikation neu erstellen. Weitere Informationen finden Sie unter Autopilot für eine vorhandene benutzerdefinierte Compute-Klasse aktivieren. - Sie können die Prioritätsregel
podFamily
nicht in Ihren eigenen ComputeClasses verwenden. Diese Regel ist nur in integrierten Autopilot-ComputeClasses verfügbar. - Die integrierten Autopilot-ComputeClasses unterstützen nicht die Aktivierung von Confidential GKE Nodes für Ihren gesamten Cluster. Wenn Sie Confidential GKE Nodes für den Cluster aktivieren, bleiben alle neuen Pods, die die integrierten Autopilot-Compute-Klassen auswählen, auf unbestimmte Zeit im Status
Pending
.
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.
Autopilot-ComputeClass in einer Arbeitslast auswählen
Wenn Sie eine Autopilot-ComputeClass in einer Arbeitslast auswählen möchten, verwenden Sie einen Knotenselektor für das Label cloud.google.com/compute-class
. Dies ist dasselbe Label, das Sie zum Auswählen einer beliebigen anderen Compute-Klasse in GKE verwenden. In den folgenden Schritten wird gezeigt, wie Sie ein Beispiel-Deployment erstellen, das eine Compute-Klasse auswählt, und wie Sie prüfen, ob die Pods im Autopilot-Modus ausgeführt werden:
Speichern Sie das folgende Beispiel-Deployment als
autopilot-cc-deployment.yaml
:Ersetzen Sie
COMPUTE_CLASS
durch den Namen der zu verwendenden Compute-Klasse. Dieser Wert kann einer der folgenden sein:Eine der folgenden integrierten Autopilot-Compute-Klassen, mit denen Arbeitslasten für allgemeine Zwecke auf der containeroptimierten Autopilot-Compute-Plattform platziert werden:
autopilot
autopilot-spot
Eine von Ihnen erstellte ComputeClass, z. B. die
autopilot-n2-class
-ComputeClass aus dem Abschnitt Benutzerdefinierte Autopilot-ComputeClass konfigurieren.
Arbeitslast bereitstellen:
kubectl apply -f autopilot-cc-deployment.yaml
So prüfen Sie, ob die Pods Autopilot verwenden:
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.
Benutzerdefinierte Autopilot-Compute-Klasse konfigurieren
Sie können benutzerdefinierte Compute-Klassen für die Verwendung von Autopilot konfigurieren. Verwenden Sie eine benutzerdefinierte Autopilot-ComputeClass, wenn für Ihre Arbeitslasten bestimmte Hardware wie GPUs oder eine bestimmte Compute Engine-Maschinenserie erforderlich ist, damit sie optimal ausgeführt werden können.
Wenn für Ihre Arbeitslasten keine spezielle Hardware erforderlich ist, empfehlen wir, stattdessen eine der integrierten Autopilot-Compute-Klassen 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
Speichern Sie das folgende Beispielmanifest für ComputeClass als
autopilot-n2-class.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: autopilot-n2-class spec: autopilot: enabled: true priorities: - machineFamily: n2 spot: true minCores: 64 - machineFamily: n2 spot: true - machineFamily: n2 spot: false activeMigration: optimizeRulePriority: true whenUnsatisfiable: DoNotScaleUp
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 N2-Maschinenfamilie.activeMigration
: Ermöglicht GKE, Pods zu Konfigurationen zu migrieren, die in der Prioritätenliste weiter oben stehen, wenn Ressourcen verfügbar werden.whenUnsatisfiable
: Der Wert vonDoNotScaleUp
in diesem Feld macht es für GKE erforderlich, eine der Regeln im Feldpriorities
für neue Knoten zu verwenden. Wenn keine dieser Prioritätsregeln erfüllt werden kann, belässt GKE den Pod im StatusPending
, bis Ressourcen verfügbar sind.DoNotScaleUp
ist der Standardwert und der empfohlene Wert für dieses Feld.
Stellen Sie die ComputeClass bereit:
kubectl apply -f autopilot-n2-class.yaml
Prüfen Sie, ob die ComputeClass vorhanden ist:
kubectl get computeclasses
Die Ausgabe sieht etwa so aus:
NAME AGE autopilot-n2-class 3s
Autopilot für eine vorhandene benutzerdefinierte Compute-Klasse aktivieren
Sie können Autopilot in vorhandenen benutzerdefinierten ComputeClasses aktivieren, die sich in einem Standardcluster befinden und für die das Feld nodePoolAutoCreation.enabled
in der Spezifikation auf true
festgelegt ist. Das Aktivieren von Autopilot in einer Compute-Klasse, 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:
Aktualisieren Sie die Manifestdatei für Ihre vorhandene ComputeClass in einem Texteditor, um das Feld
spec.autopilot
hinzuzufügen:spec: autopilot: enabled: true
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.Wenn Sie die Erstellung neuer Knoten auslösen möchten, müssen Sie alle Arbeitslasten neu erstellen, die die Compute-Klasse verwenden.
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 dem Update erstellt wurden.
Prüfen, ob Ihre Arbeitslast Autopilot verwendet
Rufen Sie mit dem Befehl
kubectl get
eine Liste der Pods in Ihrem Cluster ab:kubectl get pods --output=custom-columns=Pod:.metadata.name,Node:.spec.nodeName
Die Ausgabe sieht etwa so aus:
Pod Node helloweb-84c865764b-nzhxt gk3-cluster-1-pool-3-68fc8dca-t54b # lines omitted for clarity
Das Präfix
gk3-
im Knotennamen gibt an, dass der Pod im Autopilot-Modus ausgeführt wird.
Standardmäßig eine Autopilot-ComputeClass anwenden
In GKE können Sie eine ComputeClass als Standard für einen Namespace festlegen. Die Standardklasse des Namespace gilt für alle Pods in diesem Namespace, für die nicht explizit eine andere ComputeClass ausgewählt wird. Wenn Sie eine Autopilot-ComputeClass als Standard festlegen, können Sie alle Pods in einem Namespace standardmäßig im Autopilot-Modus ausführen, sofern für die Arbeitslast keine andere Option ausgewählt wird.
Weitere Informationen finden Sie unter Standard-ComputeClass für einen Namespace konfigurieren.
Nächste Schritte
- Informationen zu den Parametern, die Sie in ComputeClasses angeben können, finden Sie in der CustomResourceDefinition für ComputeClass.