Esegui il deployment dei workload Autopilot sull'architettura Arm

Questa pagina mostra come configurare i deployment di 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 workload che hanno requisiti hardware specifici. Alcune di queste classi di calcolo supportano più architetture CPU, come amd64 e arm64.

Casi d'uso per i nodi Arm

I nodi con architettura Arm offrono prestazioni più convenienti rispetto a nodi x86 simili. Devi selezionare Arm per i tuoi workload 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-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:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Per 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 comando gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

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), ComputeClass autopilot-arm-spot o ComputeClass autopilot-arm 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 tipi di macchine Compute Engine C4A, N4A 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 sui nodi Arm, specifica uno dei seguenti selettori (a seconda del tipo e della versione di GKE) utilizzando una regola nodeSelector o affinità nodo:

  • Nei cluster Autopilot (valori predefiniti intelligenti), specifica solo il tipo di architettura:

    • kubernetes.io/arch: arm64

    Se il tuo workload 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 (o autopilot-arm-spot)

    Se selezioni questa classe, il workload viene pianificato sulla piattaforma Arm ottimizzata per i container (o sulla relativa variante Spot VM) e il selettore kubernetes.io/arch: arm64 richiesto 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 più recenti di GKE per la compatibilità con le versioni precedenti:

    • cloud.google.com/compute-class: autopilot-arm
    • kubernetes.io/arch: arm64
  • Per i workload con requisiti hardware specifici:specifica una delle seguenti opzioni:

    • kubernetes.io/arch: arm64 in un cluster Standard. Per impostazione predefinita, GKE posiziona i pod sui tipi di macchine C4A.
    • cloud.google.com/machine-family: ARM_MACHINE_SERIES. Sostituisci ARM_MACHINE_SERIES con una serie di macchine Arm come C4A, N4A o T2A. GKE posiziona i pod nella serie specificata.

Per impostazione predefinita, l'utilizzo di una qualsiasi delle etichette, ad eccezione di Performance, consente a GKE di posizionare 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, vedi Ottimizzare le prestazioni di Autopilot Pod 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 workload, Autopilot esegue le seguenti operazioni:

  1. Esegue automaticamente il provisioning dei nodi Arm per eseguire i pod.
  2. Contrassegna automaticamente i nuovi nodi per impedire la pianificazione di pod non Arm su questi nodi.
  3. Aggiunge automaticamente una tolleranza ai tuoi 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 i valori predefiniti intelligenti:

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 ComputeClass autopilot-arm (o autopilot-arm-spot per le VM spot):

...
    spec:
      nodeSelector:
        cloud.google.com/compute-class: autopilot-arm
...

Per richiedere hardware specifico anziché nodi ottimizzati per i container Autopilot, sostituisci ComputeClasses 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 i valori predefiniti intelligenti:

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 classi di richieste come Performance o Scale-Out.

Consigli

  • Crea e utilizza immagini multi-arch come parte della 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 dei tuoi workload. 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 su errori comuni e risoluzione dei problemi, consulta la sezione Risoluzione dei problemi dei carichi di lavoro Arm.

Passaggi successivi