Esegui carichi di lavoro ARM in GKE su AWS

GKE su AWS ti consente di eseguire carichi di lavoro Arm creati per i processori AWS Graviton basati su Arm.

Limitazioni

  • I node pool Arm che eseguono versioni di Kubernetes precedenti alla 1.24.8-gke.1300 aggiungono automaticamente un taint durante la creazione pool di nodi per impedire la pianificazione dei workload Arm su nodi non Arm. I pool di nodi Arm nei cluster con versione 1.24.8-gke.1300 o successive non aggiungono più questo taint. Se esegui l'upgrade da un cluster precedente alla versione 1.24.8-gke.1300, devi creare autonomamente questo stato di contaminazione o tenerlo in considerazione durante l'upgrade.

  • I pool di nodi Arm su GKE su AWS non supportano Cloud Service Mesh, Config Sync o Policy Controller. Devi eseguire questi prodotti in un pool di nodi x86.

  • I cluster che eseguono la versione 1.24 di Kubernetes richiedono un pool di nodi x86 per eseguire Connect Agent. Se il tuo cluster esegue Kubernetes versione 1.25 o successive, non è necessario un pool di nodi x86.

Questa pagina spiega come creare un pool di nodi Arm, perché le immagini multipiattaforma sono il modo consigliato per eseguire il deployment dei workload Arm e come pianificare i workload Arm.

Prima di iniziare

Prima di creare pool di nodi per i tuoi carichi di lavoro Arm, devi disporre 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 istanza IAM per le VM del pool di nodi.
  • Una subnet in cui verranno eseguite le VM del pool di nodi.
  • Se il cluster esegue la versione 1.24 di Kubernetes, un pool di nodi x86 per eseguire Connect Agent.

    Per informazioni dettagliate su come creare un pool di nodi in GKE su AWS, consulta Creare un node pool.

Crea un pool di nodi Arm

GKE su AWS supporta i node pool basati sull'immagine del nodo minimo Canonical Ubuntu arm64 e sul runtime containerd.

Per creare un pool di nodi Arm e aggiungerlo a un cluster esistente, esegui il seguente 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 scelto per il pool di nodi
  • CLUSTER_NAME: il nome del cluster a cui collegare il pool di nodi
  • INSTANCE_TYPE: uno dei seguenti tipi di istanze:

    • m6g
    • m6gd
    • t4g
    • r6g
    • r6gd
    • c6g
    • c6gd
    • c6gn
    • x2gd
    • c7g
    • im4gn
    • g5g

      Questi tipi di istanze sono basati su processori AWS Graviton basati su Arm. Devi anche specificare le dimensioni dell'istanza che preferisci. Ad esempio, m6g.medium. Per un elenco completo, consulta Tipi di istanze AWS supportati.

  • ROOT_VOLUME_SIZE: la dimensione desiderata per il volume radice di ogni nodo, in GB

  • NODEPOOL_PROFILE: il profilo istanza IAM per le VM del pool di nodi

  • NODE_VERSION: la versione di Kubernetes da installare su ogni nodo del pool di nodi, che deve essere la versione 1.24 o successiva. Ad esempio, 1.24.3-gke.200.

  • MIN_NODES: il numero minimo di nodi che può contenere il pool di nodi

  • MAX_NODES: il numero massimo di nodi che può contenere il pool di nodi

  • MAX_PODS_PER_NODE: il numero massimo di pod che possono essere creati su un singolo nodo del pool

  • GOOGLE_CLOUD_LOCATION: il nome del Google Cloud

    posizione 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 non rientra nel blocco CIDR principale del VPC, devi eseguire alcuni passaggi aggiuntivi. Per ulteriori informazioni, consulta gruppi di sicurezza.

  • SSH_KEY_PAIR_NAME: il nome della coppia di chiavi SSH AWS creata per l'accesso SSH (facoltativo)

  • CONFIG_KMS_KEY_ARN: l'Amazon Resource Name (ARN) della chiave KMS di AWS che cripta i dati utente

Informazioni sulle immagini con più architetture

Le immagini dei container devono essere compatibili con l'architettura del nodo in cui intendi eseguire i workload ARM. Per assicurarti che l'immagine del contenitore sia compatibile con Arm, ti consigliamo di utilizzare immagini multi-architettura ("multi-arch").

Un'immagine multi-arch è un'immagine che può supportare più architetture. Sembra una singola immagine con un singolo tag, ma contiene un insieme di immagini da eseguire su architetture di macchine diverse. Le immagini multi-architettura sono compatibili con le specifiche dello schema 2 del manifest dell'immagine Docker o dell'indice delle immagini OCI.

Quando esegui il deployment di un'immagine multi-architettura in un cluster, il runtime del contenitore sceglie automaticamente l'immagine compatibile con l'architettura del nodo in cui esegui il deployment. Una volta creata un'immagine multi-architettura per un carico di lavoro, puoi eseguire il deployment di questo carico di lavoro su più architetture. La pianificazione di un'immagine con un'architettura singola su un nodo incompatibile causa un errore al momento del caricamento.

Per scoprire di più su come utilizzare le immagini multi-arch con i workload Arm, consulta Creare immagini multi-architettura per i workload Arm nella documentazione di Google Kubernetes Engine (GKE).

Passaggi successivi