Auf dieser Seite wird erläutert, wie Sie eine Arbeitslast vorbereiten, die auf Arm-Knoten in einem GKE-Standardcluster geplant werden soll. Weitere Informationen zum Planen von Arm-Arbeitslasten mit Autopilot finden Sie unter Autopilot-Arbeitslasten in der Arm-Architektur bereitstellen.
Um eine Arbeitslast erfolgreich auf einem Arm-Knoten zu planen, benötigen Sie Folgendes:
- Ein Arm-kompatibles Container-Image. Eine Anleitung dazu finden Sie unter Ist meine Arbeitslast bereit für Arm?.
- Armor-Knoten, auf denen Ihre Arm-kompatiblen Arbeitslasten geplant werden können. Informationen zum Erstellen der erforderlichen Ressourcen finden Sie unter Cluster und Knotenpools mit Arm-Knoten erstellen.
- Ein Cluster in einer Google Cloud-Region oder -Zone mit verfügbaren virtuellen Arm-Maschinen (VMs). Eine filterbare Tabelle mit Maschinentypen und Plattformen finden Sie unter Verfügbare Regionen und Zonen.
Übersicht
Standardmäßig plant GKE Arbeitslasten nur für x86-basierte Knoten (Compute Engine-Maschinenreihen mit Intel- oder AMD) durch Einfügen eines Markierung (kubernetes.io/arch=arm64:NoSchedule
) auf allen Arm-Knoten. Diese Markierung verhindert, dass x86-kompatible Arbeitslasten versehentlich auf Ihren Arm-Knoten geplant werden. Verwenden Sie die auf dieser Seite beschriebenen Felder, um den Planer anzuweisen, die Arbeitslast an den gewünschten Knotentyp zu senden, wenn Sie eine Arbeitslast auf einem Arm-Knoten bereitstellen möchten.
Verwenden Sie eines der folgenden Felder:
- Einen Knotenselektor
- Eine Knotenaffinitätsregel
Wenn Sie einen Knotenselektor oder eine Knotenaffinitätsregel verwenden, plant GKE Ihre Armor-kompatiblen Arbeitslasten nur, wenn Sie angegeben haben, dass das Container-Image der Arbeitslast in der Knotenarchitektur ausgeführt werden kann.
Wenn Sie eine Arm-kompatible Arbeitslast mit einem Knotenselektor oder mit einer Knotenaffinitätsregel planen, wie in den folgenden Abschnitten beschrieben, fügt GKE automatisch eine Toleranz zur Arbeitslastkonfiguration hinzu, sodass die Pods auf den Armknoten ausgeführt werden können.
Diese Toleranz, die der Arbeitslast hinzugefügt wird, entspricht der Markierung (kubernetes.io/arch=arm64:NoSchedule
), die allen Arm-Knoten hinzugefügt wird, damit Ihre Arbeitslast auf Arm-Knoten geplant werden kann.
In einigen Situationen, z. B. wenn Images mit mehreren Architekturen auf jedem Knoten ausgeführt werden, können Sie diese Toleranz manuell der Arbeitslastkonfiguration hinzufügen. Eine Anleitung finden Sie unter Toleranz zum Planen von Arbeitslasten mit mehreren Architekturen für mehrere Architekturen verwenden.
Knotenauswahl mit der Knotenauswahl planen
Fügen Sie der Spezifikation den folgenden Knotenselektor hinzu:
nodeSelector:
kubernetes.io/arch: arm64
Die Knotenauswahl gibt an, dass diese Arbeitslast nur für Knoten mit dem Label arm64
geplant werden soll, die alle Arm-Knoten in GKE-Clustern haben.
Wenn dieser Knotenselektor in der Arbeitslastkonfiguration enthalten ist, fügt GKE eine Toleranz hinzu, die mit der Markierung übereinstimmt. Auf diese Weise wird die Arbeitslast, die auf Armor-Knoten geplant werden soll, zugelassen.
Mit einer Knotenaffinitätsregel eine Arm-Arbeitslast planen
Sie können die Arbeitslast auch mit der Knotenaffinität planen.
Arbeitslast für eine einzelne Architektur planen
Fügen Sie der Spezifikation die folgende Knotenaffinität hinzu:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
Die Knotenaffinitätsregel gibt an, dass die Arbeitslast nur für Knoten mit dem Label arm64
geplant werden soll, die alle Arm-knoten in GKE-Clustern haben.
Wenn diese Knotenaffinitätsregel in der Arbeitslastkonfiguration enthalten ist, fügt GKE eine Toleranz hinzu, die mit der Markierung übereinstimmt. Auf diese Weise wird die Arbeitslast, die auf Armor-Knoten geplant werden soll, zugelassen.
Arbeitslast auf x86- und ARM-Architekturen planen
Wenn Sie eine Arbeitslast sowohl für x86- (Intel- und AMD-Prozessoren) als auch für Arm-Architekturen planen möchten, können Sie dies auf verschiedene Arten angeben.
Toleranz für die Planung von Arbeitslasten für mehrere Architekturen für alle Architekturen verwenden
Wenn Sie ein Image für mehrere Architekturen haben, das für jeden verfügbaren Architekturtyp in einem Standardcluster geplant werden soll, müssen Sie nur die Toleranz zur Arbeitslastspezifikation hinzufügen. Sie benötigen die auf dieser Seite beschriebenen Knotenauswahl- oder Knotenaffinitätsregeln nicht, wenn die Arbeitslast für alle Architekturtypen geplant werden kann.
Fügen Sie die Toleranz hinzu:
tolerations:
- key: kubernetes.io/arch
operator: Equal
value: arm64
effect: NoSchedule
Mit dieser Toleranz kann GKE eine Arbeitslast für Knoten mit einem beliebigen Architekturtyp planen.
Beispiel: Sie haben einen Cluster mit den folgenden Knotenpools:
- my-t2a-node-pool mit t2a-standard-16-VMs (
arm64
). - my-c2-node-pool mit c2-standard-8-VMs (
amd64
). - my-t2d-node-pool mit t2-standard-48-VMs (
amd64
).
Wenn Sie in diesem Cluster eine Arbeitslast bereitstellen, die ein Image für mehrere Architekturen und die Toleranz arm64
in der Arbeitslastkonfiguration verwendet, kann GKE die Arbeitslast für alle Knotenpools planen.
Knotenaffinitätsregel zur Planung von Arbeitslasten mit mehreren Architekturen für jede Architektur verwenden
Wenn eine Arbeitslast auf Knoten für verschiedene Architekturtypen wie x86 und Arm geplant werden soll, können Sie auch eine Knotenaffinitätsregel verwenden. Mit Knotenaffinitätsregeln können Sie genau angeben, für welche Architekturtypen die Arbeitslast geplant werden soll. Dieser Ansatz wird für die Planung von Arbeitslasten in Autopilot-Clustern empfohlen. Weitere Informationen finden Sie unter Autopilot-Arbeitslasten in der Arm-Architektur bereitstellen.
Bei x86-basierten Arbeitslasten benötigen Sie keine Knotenselektoren, Knotenaffinitätsregeln oder Toleranzen für die Planung der Arbeitslast. Wenn Sie ein Image haben, das nur auf x86-basierten Knoten geplant werden soll, müssen Sie diese Felder nicht verwenden.
Wenn Sie Arbeitslasten für jeden Architekturtyp planen möchten, listen Sie arm64
und amd64
im Abschnitt values
des Knotenaffinitätsfelds auf. Der Wert amd64
enthält alle Knoten, die x86-Prozessoren nutzen.
Das folgende Beispiel zeigt, wie diese Arbeitslast auf Knoten mit Arm-Prozessoren oder x86-Prozessoren geplant werden kann:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
- amd64
Die Labels für jeden Architekturtyp lauten:
arm64
für Knoten mit Arm-Prozessoren (z. B. Tau T2A).amd64
für Knoten mit AMD-Prozessoren (z. B. Tau T2D) oder Knoten mit Intel-Prozessoren (z. B. C2).
Beispiel: Sie haben einen Cluster mit den folgenden Knotenpools und der angegebenen Knotenaffinitätsregel:
- my-t2a-node-pool mit t2a-standard-16-VMs (
arm64
). - my-c2-node-pool mit c2-standard-8-VMs (
amd64
). - my-t2d-node-pool mit t2-standard-48-VMs (
amd64
).
Wenn Sie in diesem Cluster eine Arbeitslast bereitstellen, die ein Image für mehrere Architekturen verwendet und die Knotenaffinität arm64
in der Liste values
enthält, fügt GKE die Toleranz in der Arbeitslastkonfiguration hinzu und die Arbeitslast ist für alle Knotenpools planbar.
Arbeitslast bereitstellen
Nachdem Sie nun festgelegt haben, wo Ihre Arm-kompatiblen Arbeitslasten geplant werden sollen, können Sie Ihre Arbeitslast bereitstellen.
Wenn Sie eine Arbeitslast in einem GKE-Cluster bereitstellen, sind die Anweisungen für alle Architekturtypen identisch. Sie können eine Arm-kompatible Arbeitslast wie jede andere Arbeitslast bereitstellen, solange Sie die erforderlichen Schritte ausgeführt haben. Beispiele für die Bereitstellung von Arbeitslasten finden Sie auf den folgenden Seiten:
- Zustandslose Linux-Anwendung bereitstellen.
- Zustandsorientierte Anwendung bereitstellen.
- Jobs ausführen.
Fehlerbehebung
Allgemeine Fehler und Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Arm-Arbeitslasten.