Arm-Arbeitslast für die Bereitstellung vorbereiten


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:

Überblick

Standardmäßig plant GKE Arbeitslasten nur für x86-basierte Knoten (Compute Engine-Maschinenreihen mit Intel- oder AMD-Prozessoren) 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:

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:

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:

Fehlerbehebung

Allgemeine Fehler und Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Arm-Arbeitslasten.

Nächste Schritte