GKE su AWS consente di eseguire carichi di lavoro ARM creati per i processori AWS Graviton basati su Arm.
Limitazioni
I pool di nodi ARM che eseguono versioni di Kubernetes precedenti alla 1.24.8-gke.1300 aggiungono automaticamente un'incompatibilità durante la creazione del pool di nodi per impedire la pianificazione dei carichi di lavoro Arm su nodi non Arm. I pool di nodi ARM nei cluster con versione 1.24.8-gke.1300 o successive non aggiungono più questa incompatibilità. Se esegui l'upgrade da un cluster precedente alla versione 1.24.8-gke.1300, devi creare questa incompatibilità o tenerla in considerazione durante l'upgrade.
I pool di nodi ARM su GKE su AWS non supportano Anthos Service Mesh, Config Sync o Policy Controller. Devi eseguire questi prodotti su un pool di nodi x86.
I cluster che eseguono Kubernetes versione 1.24 richiedono un pool di nodi x86 per eseguire l'agente Connect. Se il tuo cluster esegue Kubernetes 1.25 o versioni successive, non hai bisogno di un pool di nodi x86.
Questa pagina spiega come creare un pool di nodi Arm, perché le immagini multi-architettura sono il metodo consigliato per eseguire il deployment dei carichi di lavoro Arm e come pianificare i carichi di lavoro ARM.
Prima di iniziare
Prima di creare pool di nodi per i carichi di lavoro ARM, hai bisogno delle seguenti risorse:
- Un cluster AWS esistente in cui creare il pool di nodi. Questo cluster deve eseguire Kubernetes 1.24 o versioni successive.
- Un profilo di istanza IAM per le VM del pool di nodi.
- Una subnet in cui verranno eseguite le VM del pool di nodi.
Se nel cluster è in esecuzione Kubernetes versione 1.24, un pool di nodi x86 per eseguire l'agente Connect.
Per maggiori dettagli su come creare un pool di nodi in GKE su AWS, consulta Creare un pool di nodi.
Crea un pool di nodi Arm
GKE su AWS supporta i pool di nodi creati sull'immagine minima dei nodi arm64 di Canonical Ubuntu
e il runtime containerd
.
Per creare un pool di nodi Arm e aggiungerlo a un cluster esistente, esegui questo comando:
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
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome che scegli per il pool di nodiCLUSTER_NAME
: il nome del cluster a cui collegare il pool di nodiINSTANCE_TYPE
: uno dei seguenti tipi di istanza:m6g
m6gd
t4g
r6g
r6gd
c6g
c6gd
c6gn
x2gd
c7g
im4gn
g5g
Questi tipi di istanza sono basati su processori AWS Graviton basati su Arm. Devi anche specificare la dimensione dell'istanza che preferisci. Ad esempio,
m6g.medium
. Per un elenco completo, vedi Tipi di istanze AWS supportati.
ROOT_VOLUME_SIZE
: la dimensione desiderata per il volume principale di ciascun nodo, in GBNODEPOOL_PROFILE
: il profilo dell'istanza IAM per le VM del pool di nodiNODE_VERSION
: la versione di Kubernetes da installare su ciascun nodo nel pool di nodi, che deve essere 1.24 o successiva. Ad esempio,1.24.3-gke.200
.MIN_NODES
: il numero minimo di nodi che il pool di nodi può contenereMAX_NODES
: il numero massimo di nodi che il pool di nodi può contenereMAX_PODS_PER_NODE
: il numero massimo di pod che possono essere creati su qualsiasi singolo nodo nel poolGOOGLE_CLOUD_LOCATION
: il nome di Google Cloudlocalità da cui verrà gestito questo pool di nodi
NODEPOOL_SUBNET
: l'ID della subnet su cui verrà eseguito il pool di nodi. Se questa subnet si trova all'esterno del blocco CIDR principale del VPC, devi eseguire alcuni passaggi aggiuntivi. Per maggiori informazioni, vedi gruppi di sicurezza.SSH_KEY_PAIR_NAME
: il nome della coppia di chiavi SSH di AWS creata per l'accesso SSH (facoltativo)CONFIG_KMS_KEY_ARN
: l'Amazon Resource Name (ARN) della chiave KMS AWS che cripta i dati utente
Comprendere le immagini con più architetture
Le immagini container devono essere compatibili con l'architettura del nodo in cui intendi eseguire i carichi di lavoro ARM. Per assicurarti che l'immagine container sia compatibile con Arm, ti consigliamo di utilizzare immagini con più architetture ("multi-arch").
Un'immagine multi-arco è un'immagine in grado di supportare più architetture. Sembra una singola immagine con un singolo tag, ma contiene un insieme di immagini da eseguire su diverse architetture di macchine. Le immagini multi-arch sono compatibili con le specifiche Docker Image Manifest V2 Scheme 2 o OCI Image Index.
Quando esegui il deployment di un'immagine multi-arch in un cluster, il runtime del container sceglie automaticamente l'immagine compatibile con l'architettura del nodo in cui stai eseguendo il deployment. Dopo aver ottenuto un'immagine multi-arch per un carico di lavoro, puoi eseguire il deployment del carico di lavoro in più architetture. La pianificazione di un'immagine con architettura singola su un nodo incompatibile causa un errore al momento del caricamento.
Per saperne di più su come utilizzare immagini multi-arch con i carichi di lavoro ARM, consulta Creare immagini con più architetture per i carichi di lavoro ARM nella documentazione di Google Kubernetes Engine (GKE).