Questa pagina mostra come configurare i deployment GKE Autopilot (Google Kubernetes Engine) per richiedere nodi basati sull'architettura Arm.
Informazioni sull'architettura Arm in Autopilot
I cluster Autopilot offrono
classi di calcolo
per i carichi di lavoro con requisiti hardware specifici. Alcuni di questi
classi di calcolo supportano più architetture CPU, ad esempio amd64
e arm64
.
Casi d'uso per i nodi Arm
I nodi con architettura Arm offrono prestazioni più convenienti rispetto ai nodi x86 simili. Devi selezionare Arm per i tuoi carichi di lavoro Autopilot in situazioni come le seguenti:
- Il tuo ambiente si basa sull'architettura Arm per la compilazione e i test.
- Stai sviluppando applicazioni per dispositivi Android che funzionano su CPU Arm.
- Utilizzi immagini multi-architettura e vuoi ottimizzare i costi durante l'esecuzione dei tuoi workload.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
- Esamina i requisiti e le limitazioni per i nodi Arm.
- Assicurati di disporre della quota per i tipi di macchine Compute Engine C4A o Tau T2A.
- 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 su nodi Arm, specifica una delle seguenti etichette in una regola nodeSelector o node affinity:
kubernetes.io/arch: arm64
. Per impostazione predefinita, GKE posiziona i pod su tipi di macchineT2A
. Se le macchineT2A
non sono disponibili, GKE colloca i pod sui tipi di macchineC4A
.cloud.google.com/machine-family: ARM_MACHINE_SERIES
: sostituireARM_MACHINE_SERIES
con una serie di macchine Arm comeC4A
oT2A
. GKE posiziona i pod nella serie specificata.
Per impostazione predefinita, l'utilizzo di una delle etichette consente a GKE di posizionare altri pod sullo stesso nodo se è disponibile la capacità. Per richiedere un
nodo dedicato per ogni pod, aggiungi l'etichetta cloud.google.com/compute-class:
Performance
al manifest. Per maggiori dettagli, vedi Ottimizzare il rendimento del 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 il provisioning automatico dei nodi Arm per l'esecuzione dei pod.
- Contamina automaticamente i nuovi nodi per impedire la pianificazione di pod non Arm su questi nodi.
- Aggiunge automaticamente una tolleranza ai pod Arm per consentire la pianificazione sui nuovi nodi.
Richiesta di esempio 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 mostra come richiedere nodi Arm in un nodeSelector:
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: Performance
kubernetes.io/arch: arm64
containers:
- name: nginx-arm
image: nginx
resources:
requests:
cpu: 2000m
memory: 2Gi
nodeAffinity
Puoi utilizzare l'affinità dei nodi per richiedere nodi Arm. Puoi anche specificare il tipo di affinità dei nodi da utilizzare:
requiredDuringSchedulingIgnoredDuringExecution
: deve utilizzare la classe e l'architettura di calcolo specificate.preferredDuringSchedulingIgnoredDuringExecution
: utilizza la classe di calcolo e l'architettura specificate secondo il criterio del massimo impegno. Ad esempio, se un nodo x86 esistente è allocatile, GKE posiziona il pod sul nodo x86 anziché eseguire il provisioning di un nuovo nodo Arm. A meno che tu non stia utilizzando un manifest dell'immagine multi-architettura, il pod avrà un arresto anomalo. Ti consigliamo vivamente di richiedere esplicitamente l'architettura specifica che ti interessa.
Il seguente manifest di esempio richiede la classe Performance
e i nodi Arm:
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:
- Performance
- key: kubernetes.io/arch
operator: In
values:
- arm64
Consigli
- Crea e utilizza immagini multi-arch come parte della tua pipeline. Le immagini multi-architettura assicurano che i pod vengano eseguiti anche se sono posizionati su nodi x86.
- Richiedi esplicitamente le classi di architettura e di calcolo nei manifest del carico di lavoro. In caso contrario, Autopilot utilizza l'architettura predefinita della classe di calcolo selezionata, che potrebbe non essere ARM.
Disponibilità
Puoi eseguire il deployment dei carichi di lavoro Autopilot sull'architettura Arm nelle località Google Cloud che supportano l'architettura Arm. Per maggiori dettagli, consulta Regioni e zone disponibili.
Risoluzione dei problemi
Per gli errori comuni e le informazioni 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 le classi di calcolo Autopilot disponibili.
- Scopri le richieste di risorse predefinite, minime e massime per ogni piattaforma.