Mit GKE on AWS können Sie Arm-Arbeitslasten ausführen, die für Arm-basierte AWS Graviton-Prozessoren entwickelt wurden.
Beschränkungen
Bei Arm-Knotenpools, auf denen Kubernetes-Versionen vor 1.24.8-gke.1300 ausgeführt werden, wird beim Erstellen des Knotenpools automatisch eine Markierung hinzugefügt, um zu verhindern, dass Arm-Arbeitslasten auf Nicht-Arm-Knoten geplant werden. Bei Arm-Knotenpools in Clustern mit Version 1.24.8-gke.1300 oder höher wird dieser Taint nicht mehr hinzugefügt. Wenn Sie ein Upgrade von einem Cluster vor 1.24.8-gke.1300 ausführen, müssen Sie diesen Taint selbst erstellen oder ihn anderweitig beim Upgrade berücksichtigen.
Arm-Knotenpools in GKE on AWS unterstützen Cloud Service Mesh, Config Sync oder Policy Controller nicht. Sie müssen diese Produkte in einem x86-Knotenpool ausführen.
Für Cluster mit Kubernetes-Version 1.24 ist ein x86-Knotenpool erforderlich, um den Connect Agent auszuführen. Wenn auf Ihrem Cluster Kubernetes-Version 1.25 oder höher ausgeführt wird, benötigen Sie keinen x86-Knotenpool.
Auf dieser Seite wird erläutert, wie Sie einen Arm-Knotenpool erstellen, warum Images mit mehreren Architekturen die empfohlene Methode zum Bereitstellen von Arm-Arbeitslasten sind und wie Sie Arm-Arbeitslasten planen.
Hinweise
Bevor Sie Knotenpools für Ihre Arm-Arbeitslasten erstellen, benötigen Sie die folgenden Ressourcen:
- Ein vorhandener AWS-Cluster, in dem der Knotenpool erstellt werden soll. Auf diesem Cluster muss Kubernetes-Version 1.24 oder höher ausgeführt werden.
- Ein IAM-Instanzprofil für die Knotenpool-VMs.
- Ein Subnetz, in dem die Knotenpool-VMs ausgeführt werden.
Wenn auf Ihrem Cluster Kubernetes-Version 1.24 ausgeführt wird, benötigen Sie einen x86-Knotenpool zum Ausführen des Connect-Agents.
Weitere Informationen zum Erstellen eines Knotenpools in GKE on AWS finden Sie unter Knotenpool erstellen.
Arm-Knotenpool erstellen
GKE on AWS unterstützt Knotenpools, die auf dem minimalen Knoten-Image von Canonical Ubuntu arm64 und der containerd
-Laufzeit basieren.
Führen Sie den folgenden Befehl aus, um einen Arm-Knotenpool zu erstellen und einem vorhandenen Cluster hinzuzufügen:
gcloud container aws node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--instance-type INSTANCE_TYPE \
--root-volume-size ROOT_VOLUME_SIZE \
--iam-instance-profile NODEPOOL_PROFILE \
--node-version NODE_VERSION \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--max-pods-per-node MAX_PODS_PER_NODE \
--location GOOGLE_CLOUD_LOCATION \
--subnet-id NODEPOOL_SUBNET \
--ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN
Ersetzen Sie Folgendes:
NODE_POOL_NAME
: der Name, den Sie für Ihren Knotenpool auswählenCLUSTER_NAME
: der Name des Clusters, an den der Knotenpool angehängt werden soll.INSTANCE_TYPE
: einer der folgenden Instanztypen:m6g
m6gd
t4g
r6g
r6gd
c6g
c6gd
c6gn
x2gd
c7g
im4gn
g5g
Diese Instanztypen basieren auf Arm-basierten AWS Graviton-Prozessoren. Sie müssen auch die gewünschte Instanzgröße angeben. Beispiel:
m6g.medium
Eine vollständige Liste finden Sie unter Unterstützte AWS-Instanztypen.
ROOT_VOLUME_SIZE
: ist die gewünschte Größe für das Root-Volume jedes Knotens in GbNODEPOOL_PROFILE
: ist das IAM-Instanzprofil für Knotenpool-VMsNODE_VERSION
: die Kubernetes-Version, die auf jedem Knoten im Knotenpool installiert werden soll. Sie muss Version 1.24 oder höher sein. Beispiel:1.24.3-gke.200
MIN_NODES
: ist die Mindestanzahl von Knoten, die der Knotenpool enthalten kann.MAX_NODES
: ist die maximale Anzahl an Knoten, die der Knotenpool enthalten darf.MAX_PODS_PER_NODE
: die maximale Anzahl von Pods, die auf einem einzelnen Knoten im Pool erstellt werden könnenGOOGLE_CLOUD_LOCATION
: der Name des Google CloudStandort, von dem dieser Knotenpool verwaltet wird
NODEPOOL_SUBNET
ist die ID des Subnetzes, in dem der Knotenpool ausgeführt wird. Wenn sich dieses Subnetz außerhalb des primären CIDR-Blocks der VPC befindet, sind zusätzliche Schritte erforderlich. Weitere Informationen finden Sie unter Sicherheitsgruppen.SSH_KEY_PAIR_NAME
ist der Name des AWS-SSH-Schlüsselpaars, das für den SSH-Zugriff erstellt wurde (optional).CONFIG_KMS_KEY_ARN
: ist der Amazon-Ressourcenname (ARN) des AWS KMS-Schlüssels, der Nutzerdaten verschlüsselt
Images mit mehreren Architekturen
Container-Images müssen mit der Architektur des Knotens kompatibel sein, auf dem Sie die Arm-Arbeitslasten ausführen möchten. Damit Ihr Container-Image Arm-kompatibel ist, empfehlen wir, Images mit mehreren Architekturen zu verwenden.
Ein Image für mehrere Architekturen ist ein Image, das mehrere Architekturen unterstützen kann. Es sieht wie ein einzelnes Image mit einem einzelnen Tag aus, enthält aber eine Reihe von Images, die auf verschiedenen Maschinenarchitekturen ausgeführt werden können. Images für mehrere Architekturen sind mit den Spezifikationen für Docker Image Manifest V2 Scheme 2 oder OCI Image Index kompatibel.
Wenn Sie ein Image für mehrere Architekturen in einem Cluster bereitstellen, wählt die Containerlaufzeit automatisch das Image aus, das mit der Architektur des Knotens kompatibel ist, auf dem Sie die Bereitstellung vornehmen. Sobald Sie ein Image für mehrere Architekturen für eine Arbeitslast haben, können Sie diese Arbeitslast über mehrere Architekturen hinweg bereitstellen. Wenn Sie ein Image für eine einzelne Architektur auf einem inkompatiblen Knoten planen, tritt beim Laden ein Fehler auf.
Weitere Informationen zur Verwendung von Images mit mehreren Architekturen mit Arm-Arbeitslasten finden Sie in der Google Kubernetes Engine-Dokumentation (GKE) unter Images mit mehreren Architekturen für Arm-Arbeitslasten erstellen.