Questa pagina mostra come configurare i tuoi deployment Google Kubernetes Engine (GKE) Autopilot per richiedere nodi basati sull'architettura Arm.
Informazioni sull'architettura Arm in Autopilot
I cluster Autopilot offrono
classi di computing
per i carichi di lavoro che hanno requisiti hardware specifici. Alcune di queste classi di computing supportano più architetture CPU, come amd64 e arm64.
Casi d'uso per i nodi Arm
I nodi con architettura Arm offrono prestazioni più efficienti in termini di costi rispetto ai nodi x86 simili. Dovresti selezionare Arm per i carichi di lavoro Autopilot in situazioni come le seguenti:
- Il tuo ambiente si basa sull'architettura Arm per la creazione e il test.
- Stai sviluppando applicazioni per dispositivi Android che vengono eseguite su CPU Arm.
- Utilizzi immagini multi-arch e vuoi ottimizzare i costi durante l'esecuzione dei carichi di lavoro.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
- Esamina i requisiti e le limitazioni per i nodi Arm.
Requisiti
- Per utilizzare ComputeClass
autopilot-arm, assicurati che il cluster esegua GKE versione 1.35.3-gke.1389000 o successive. - Per utilizzare funzionalità come l'impostazione predefinita intelligente (specificando solo l'
etichetta
kubernetes.io/arch: arm64),autopilot-arm-spotComputeClass oautopilot-armComputeClass nei cluster GKE Standard che utilizzano ComputeClass Autopilot, il cluster deve eseguire la versione 1.36.0-gke.3302001 o successive. - Assicurati di avere una quota per i C4A, N4A o i tipi di macchine di Tau T2A Compute Engine.
- Assicurati di avere un pod con un'immagine container creata per l'architettura Arm.
Come richiedere nodi Arm in Autopilot
Per indicare ad Autopilot di eseguire i pod sui nodi Arm, specifica uno dei seguenti selettori (a seconda del tipo e della versione di GKE) utilizzando una nodeSelector o di affinità dei nodi:
Nei cluster Autopilot (impostazione predefinita intelligente): specifica solo il tipo di architettura:
kubernetes.io/arch: arm64
Se il carico di lavoro viene eseguito su un cluster Autopilot, viene selezionata la piattaforma Arm per uso generico.
Nei cluster Autopilot o nei cluster Standard che utilizzano ComputeClass Autopilot (solo ComputeClass): specifica ComputeClass:
cloud.google.com/compute-class: autopilot-arm(oautopilot-arm-spot)
Selezionando questa classe, il carico di lavoro viene pianificato sulla piattaforma Arm ottimizzata per i container (o sulla relativa variante di VM spot) e il selettore
kubernetes.io/arch: arm64richiesto viene aggiunto automaticamente al pod durante l'ammissione.Selezione esplicita (versioni GKE precedenti): nei cluster Autopilot che eseguono la versione 1.35.3-gke.1389000 o successive, ma precedenti alla 1.36.0-gke.3302001, specifica entrambi i seguenti selettori per selezionare la piattaforma Arm per uso generico. Questa combinazione è supportata anche nelle versioni GKE più recenti per la compatibilità con le versioni precedenti:
cloud.google.com/compute-class: autopilot-armkubernetes.io/arch: arm64
Per i carichi di lavoro con requisiti hardware specifici: specifica uno dei seguenti:
kubernetes.io/arch: arm64in un cluster Standard. Per impostazione predefinita, GKE inserisce i pod sui tipi di macchineC4A.cloud.google.com/machine-family: ARM_MACHINE_SERIES. SostituisciARM_MACHINE_SERIEScon una serie di macchine Arm comeC4A,N4AoT2A. GKE inserisce i pod nella serie specificata.
Per impostazione predefinita, l'utilizzo di una delle etichette, ad eccezione di Performance, consente a GKE di inserire altri pod sullo stesso nodo se è disponibile capacità su quel nodo.
Per richiedere un nodo dedicato per ogni pod, aggiungi l'etichetta cloud.google.com/compute-class: Performance al manifest insieme alle etichette dell'architettura o della famiglia di macchine. Per maggiori dettagli, consulta
Ottimizzare le prestazioni dei pod Autopilot scegliendo una serie di macchine.
In alternativa, puoi utilizzare l'etichetta Scale-Out con l'etichetta arm64 per richiedere T2A.
Puoi anche richiedere l'architettura Arm per i pod spot.
Quando esegui il deployment del carico di lavoro, Autopilot esegue le seguenti operazioni:
- Esegue automaticamente il provisioning dei nodi Arm per eseguire i pod.
- Applica automaticamente un taint ai nuovi nodi per impedire la pianificazione dei pod non Arm su questi nodi.
- Aggiunge automaticamente una tolleranza ai pod Arm per consentire la pianificazione sui nuovi nodi.
Esempio di richiesta per l'architettura Arm
Le seguenti specifiche di esempio mostrano come utilizzare un selettore di nodi o una regola di affinità dei nodi per richiedere l'architettura Arm in Autopilot.
nodeSelector
Il seguente manifest di esempio richiede un nodo Arm ottimizzato per i container Autopilot utilizzando l'impostazione predefinita intelligente:
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:
kubernetes.io/arch: arm64
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
In alternativa, puoi richiedere la piattaforma Arm ottimizzata per i container
specificando esplicitamente autopilot-arm (o autopilot-arm-spot
per le VM spot) ComputeClass:
...
spec:
nodeSelector:
cloud.google.com/compute-class: autopilot-arm
...
Per richiedere hardware specifico anziché nodi ottimizzati per i container Autopilot, sostituisci ComputeClass o aggiungi cloud.google.com/machine-family: C4A al selettore.
nodeAffinity
Puoi utilizzare l'affinità dei nodi per richiedere nodi Arm.
Il seguente manifest di esempio richiede un nodo Arm ottimizzato per i container Autopilot utilizzando l'impostazione predefinita intelligente:
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: kubernetes.io/arch
operator: In
values:
- arm64
Per richiedere hardware specifico anziché nodi ottimizzati per i container Autopilot, sostituisci kubernetes.io/arch con regole di affinità specifiche per la famiglia di macchine o richiedi classi come Performance o Scale-Out.
Consigli
- Crea e utilizza immagini multi-arch come parte della pipeline. Le immagini multi-arch assicurano che i pod vengano eseguiti anche se vengono inseriti su nodi x86.
- Richiedi esplicitamente l'architettura e le classi di computing nei manifest dei carichi di lavoro. In caso contrario, Autopilot utilizza l'architettura predefinita della classe di computing selezionata, che potrebbe non essere Arm.
Disponibilità
Puoi eseguire il deployment dei carichi di lavoro Autopilot sull'architettura Arm nelle seguenti regioni: us-east1, us-west1, europe-west1, europe-west2, europe-west4, asia-southeast1 e us-central1.
Risoluzione dei problemi
Per informazioni sugli errori comuni e sulla risoluzione dei problemi, consulta Risolvere i problemi relativi ai carichi di lavoro Arm.
Passaggi successivi
- Scopri di più sull'architettura dei cluster Autopilot.
- Scopri di più sul ciclo di vita dei pod.
- Scopri di più sulle classi di computing Autopilot disponibili.
- Scopri di più sulle richieste di risorse predefinite, minime e massime per ogni piattaforma.