Autopilot-Arbeitslasten in der Arm-Architektur bereitstellen


Auf dieser Seite erfahren Sie, wie Sie Ihre GKE-Autopilot-Bereitstellungen (Google Kubernetes Engine) konfigurieren, um Knoten anzufordern, die von Arm-Architektur unterstützt werden.

Über Arm-Architektur in Autopilot

Autopilot-Cluster bieten Compute-Klassen für Arbeitslasten, die bestimmte Hardwareanforderungen haben. Einige dieser Rechenklassen unterstützen mehrere CPU-Architekturen wie amd64 und arm64.

Anwendungsfälle für Arm-Knoten

Knoten mit der Arm-Architektur bieten eine kostengünstigere Leistung als ähnliche x86-Knoten. Sie sollten Arm für Ihre Autopilot-Arbeitslasten in Situationen wie der folgenden auswählen:

  • Ihre Umgebung basiert auf der Arm-Architektur zum Erstellen und Testen.
  • Sie entwickeln Anwendungen für Android-Geräte, die auf Arm-CPUs ausgeführt werden.
  • Sie verwenden Images für mehrere Architekturen und möchten die Kosten optimieren, während Sie Ihre Arbeitslasten ausführen.

Arm-Knoten im Autopilot anfordern

Wenn Sie Arm-Knoten für Ihre Pods anfordern möchten, müssen Sie Knoten mit der Arm-Architektur anfordern und eine Compute-Klasse anfordern, die Arm-Knoten unterstützt. In den folgenden Abschnitten wird gezeigt, wie Sie die Compute-Klasse und die Arm-Architektur mithilfe eines Knotenselektors oder einer Knotenaffinitätsregel in Ihrer Pod-Spezifikation anfordern.

Eine Liste der Compute-Klassen, die die Arm-Architektur unterstützen, finden Sie unter Compute-Klassen in Autopilot.

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.
  • Prüfen Sie, ob Sie einen GKE Autopilot-Cluster haben, auf dem GKE Version 1.24.1-gke.1400 oder höher ausgeführt wird. Verwenden Sie zum Festlegen der Version das Flag --cluster-version in dem Befehl create oder upgrade.
  • Achten Sie darauf, dass Sie ein Kontingent für den Compute Engine-Maschinentyp T2A haben.
  • Prüfen Sie, ob Sie einen Pod mit einem Container-Image haben, das für die Arm-Architektur erstellt wurde.

Compute-Klasse und Arm-Architektur anfordern

Geben Sie beide Labels in einem nodeSelector oder einer Knotenaffinitätsregel an, damit Autopilot Ihre Pods in einer Compute-Klasse platzieren kann, die die Arm-Architektur unterstützt:

cloud.google.com/compute-class: COMPUTE_CLASS
kubernetes.io/arch: arm64

Ersetzen Sie COMPUTE_CLASS durch den Namen einer Compute-Klasse, die die Arm-Architektur unterstützt, z. B. Scale-Out.

Zum Bereitstellen Ihrer Arbeitslast führt Autopilot Folgendes aus:

  1. Stellt automatisch Arm-Knoten bereit, um Ihre Pods auszuführen.
  2. Die neuen Knoten werden automatisch markiert, damit keine Nicht-Arm-Pods auf diesen Knoten geplant werden.
  3. Fügt Ihren Arm-Pods automatisch eine Toleranz hinzu, um die Planung auf den neuen Knoten zu ermöglichen.

Sie können auch die Arm-Architektur für Spot-Pods anfordern.

Beispielanfrage für die Arm-Architektur

Die folgenden Beispielspezifikationen zeigen, wie Sie einen Knotenselektor oder eine Knotenaffinitätsregel verwenden, um die Arm-Architektur in Autopilot anzufordern.

nodeSelector

Das folgende Beispielmanifest zeigt, wie Sie Arm-Knoten in einem nodeSelector anfordern:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      nodeSelector:
        cloud.google.com/compute-class: Scale-Out
        kubernetes.io/arch: arm64
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

nodeAffinity

Sie können Arm-Knoten mithilfe der Knotenaffinität anfordern. Sie können auch den Typ der zu verwendenden Knotenaffinität angeben:

  • requiredDuringSchedulingIgnoredDuringExecution muss die angegebene Compute-Klasse und Architektur verwenden.
  • preferredDuringSchedulingIgnoredDuringExecution: Verwenden Sie die angegebene Computing-Klasse und -Architektur auf Best-Effort-Basis. Wenn beispielsweise ein vorhandener x86-Knoten zuweisbar ist, platziert GKE Ihren Pod auf dem x86-Knoten, anstatt einen neuen Arm-Knoten bereitzustellen. Wenn Sie kein Image-Manifest für mehrere Architekturen verwenden, stürzt Ihr Pod ab. Wir empfehlen dringend, die gewünschte Architektur explizit anzufordern.

Das folgende Beispielmanifest erfordert die Klasse Scale-Out und die Arm-Knoten:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-arm
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-arm
  template:
    metadata:
      labels:
        app: nginx-arm
    spec:
      terminationGracePeriodSeconds: 25
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi
            ephemeral-storage: 1Gi
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/compute-class
                operator: In
                values:
                - Scale-Out
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64

Empfehlungen

  • Images für mehrere Architekturen als Teil Ihrer Pipeline erstellen und verwenden. Images für mehrere Architekturen sorgen dafür, dass Ihre Pods auch dann ausgeführt werden, wenn sie auf x86-Knoten platziert werden.
  • Fordern Sie explizit Architektur und Compute-Klassen in Ihren Arbeitslastmanifesten an. Wenn nicht, verwendet Autopilot die Standardarchitektur der ausgewählten Compute-Klasse, die möglicherweise nicht "Arm" ist.

Verfügbarkeit

Sie können Autopilot-Arbeitslasten in der Arm-Architektur in den folgenden Google Cloud-Regionen bereitstellen:

  • us-central1
  • europe-west4
  • asia-southeast1

Fehlerbehebung

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

Nächste Schritte