Esegui il deployment dei workload Autopilot sull'architettura Arm

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 update comando. 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.
  • Per utilizzare la ComputeClass autopilot-arm, assicurati che il cluster esegua la versione GKE 1.35.3-gke.1389000 o successive.
  • Assicurati di avere una quota per i C4A, N4A, o Tau T2A tipi di macchine 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, utilizza uno dei seguenti metodi, a seconda dei requisiti. Questi vengono specificati utilizzando un nodeSelector o una regola di affinità nodo:

  • Per i carichi di lavoro generici: richiedi la piattaforma Arm ottimizzata per i container specificando entrambi i seguenti elementi:
    • cloud.google.com/compute-class: autopilot-arm
    • kubernetes.io/arch: arm64
  • Per i carichi di lavoro con requisiti hardware specifici: specifica una delle seguenti opzioni:

    • kubernetes.io/arch: arm64. Per impostazione predefinita, GKE inserisce i pod sui tipi di macchine C4A per i cluster che eseguono la versione 1.31.3-gke.1056000 e successive. Se il cluster esegue una versione precedente, GKE inserisce i pod sui tipi di macchine T2A.

    • cloud.google.com/machine-family: ARM_MACHINE_SERIES. Sostituisci ARM_MACHINE_SERIES con una serie di macchine Arm come C4A, N4A o T2A. 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 di architettura o 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:

  1. Esegue automaticamente il provisioning dei nodi Arm per eseguire i pod.
  2. Applica automaticamente un taint ai nuovi nodi per impedire la pianificazione dei pod non Arm su questi nodi.
  3. 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à nodo per richiedere l'architettura Arm in Autopilot.

nodeSelector

Il seguente manifest di esempio richiede un nodo Arm ottimizzato per i container Autopilot:

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: autopilot-arm
        kubernetes.io/arch: arm64
      containers:
      - name: nginx-arm
        image: nginx
        resources:
          requests:
            cpu: 2000m
            memory: 2Gi

Per richiedere hardware specifico anziché nodi ottimizzati per i container Autopilot, sostituisci autopilot-arm con Performance o Scale-Out in nodeSelector.

nodeAffinity

Puoi utilizzare l'affinità nodo per richiedere nodi Arm.

Il seguente manifest di esempio richiede un nodo Arm ottimizzato per i container Autopilot:

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:
                - autopilot-arm
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64

Per richiedere hardware specifico anziché nodi ottimizzati per i container Autopilot, sostituisci autopilot-arm con Performance o Scale-Out nelle regole nodeAffinity.

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-west4 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