Esegui carichi di lavoro in modalità Autopilot nei cluster Standard

Gli amministratori dei cluster e gli operatori delle applicazioni possono usufruire dei vantaggi di Google Kubernetes Engine (GKE) Autopilot, come prezzi e impostazioni preconfigurate, nei cluster in modalità Standard. Questo documento mostra come utilizzare ComputeClasses per eseguire il deployment di un workload Autopilot in un cluster Standard. Dovresti già avere familiarità con i seguenti concetti:

Informazioni sulle classi di computing Autopilot

GKE fornisce risorse personalizzate di Kubernetes denominate ComputeClasses che possono essere implementate nel cluster come qualsiasi altra risorsa Kubernetes. Una ComputeClass definisce un elenco di configurazioni dei nodi, come i tipi di macchine o le VM spot. Puoi selezionare ComputeClass nei tuoi workload, il che indica a GKE che tutti i nuovi nodi devono utilizzare una delle configurazioni nell'elenco.

Se un carico di lavoro seleziona una ComputeClass con il campo autopilot abilitato, GKE esegue i pod in modalità Autopilot. I nodi creati da GKE sono gestiti da Google e includono molte delle impostazioni di sicurezza e delle funzionalità Autopilot predefinite. Per ulteriori informazioni sulle implicazioni dell'esecuzione di un workload Autopilot nei cluster standard, incluse le differenze che potresti notare quando esegui il deployment di questi workload, consulta Informazioni sui workload in modalità Autopilot in GKE Standard.

Tipi di classi di computing Autopilot

GKE fornisce ComputeClass Autopilot integrate che puoi utilizzare per la maggior parte dei carichi di lavoro per uso generico. Puoi anche configurare una classe Compute personalizzata nuova o esistente per utilizzare la modalità Autopilot. Il tipo di ComputeClass Autopilot che utilizzi dipende dal fatto che i tuoi workload richiedano hardware specifico, come segue:

  • Carichi di lavoro per uso generico: utilizza una delle ComputeClass Autopilot integrate, che posizionano i pod sulla piattaforma di calcolo ottimizzata per i container.
  • Workload che richiedono hardware specifico: abilita la modalità Autopilot per qualsiasi ComputeClass personalizzata, esegui il deployment di ComputeClass nel cluster e seleziona ComputeClass nei tuoi workload.

Per ulteriori informazioni su queste opzioni, su quando utilizzarle e sui prezzi per ciascuna opzione, consulta Selezione dell'hardware nelle classi di computing Autopilot.

Prezzi

I prezzi di GKE Autopilot si applicano ai carichi di lavoro e ai nodi che utilizzano una ComputeClass Autopilot. Il modello di prezzi applicato dipende dalla regola di priorità ComputeClass che GKE utilizza per creare nodi per i tuoi carichi di lavoro. Per saperne di più, consulta la sezione Prezzi in "Informazioni sui workload in modalità Autopilot in GKE Standard".

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

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

Requisiti

  • Il cluster deve eseguire una delle seguenti versioni di GKE:

    • Per utilizzare Autopilot in ComputeClasses, il cluster deve eseguire 1.34.1-gke.1829001 o versioni successive.
    • Per utilizzare le regole di priorità podFamily nelle ComputeClass personalizzate di Autopilot, il cluster deve eseguire la versione 1.35.2-gke.1485000 o successive.
  • Almeno un pool di nodi nel cluster non deve avere taint dei nodi.

    Questo pool di nodi è necessario per eseguire i pod di sistema GKE Standard che non possono essere eseguiti sui nodi Autopilot nei cluster Standard a causa dei taint che GKE aggiunge a questi nodi.

  • Shielded GKE Nodes è obbligatorio ed è abilitato per impostazione predefinita.

  • Devi utilizzare un cluster nativo di VPC.

  • Se utilizzi Kubernetes NetworkPolicies, il cluster deve utilizzare GKE Dataplane V2. Per impostazione predefinita, tutti i nuovi cluster utilizzano GKE Dataplane V2.

    Se il tuo cluster non utilizza GKE Dataplane V2, devi disattivare l'applicazione delle policy di rete.

Limitazioni

  • La famiglia di pod general-purpose-arm e la classe di computing autopilot-arm sono disponibili solo tramite i cluster Autopilot. I cluster Standard con nodi Autopilot saranno supportati in una versione successiva.
  • Per aggiornare le ComputeClass esistenti nel cluster in modo che utilizzino la modalità Autopilot, devi ricrearle con una specifica aggiornata. Per saperne di più, consulta Abilitare Autopilot per una ComputeClass personalizzata esistente.
  • Le ComputeClass Autopilot integrate non supportano l'attivazione dei nodi GKE confidenziali per l'intero cluster. Se abiliti Confidential GKE Nodes per il cluster, tutti i nuovi pod che selezionano le ComputeClass Autopilot integrate rimangono nello stato Pending indefinitamente.
  • L'applicazione dei criteri di rete Calico non è supportata. Devi utilizzare GKE Dataplane V2 o disattivare l'applicazione dei criteri di rete.
  • Il nome di ComputeClass non può iniziare con gke o autopilot, che sono prefissi riservati.

Ruoli e autorizzazioni richiesti

Per ottenere le autorizzazioni necessarie per eseguire il deployment di ComputeClass, chiedi all'amministratore di concederti il ruolo IAM Kubernetes Engine Developer (roles/container.developer) nel cluster o nel progetto . Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Modificare i cluster per soddisfare i requisiti di Autopilot

Puoi utilizzare la console Cloud de Confiance per verificare se il tuo cluster Standard soddisfa tutti i requisiti per eseguire i carichi di lavoro in modalità Autopilot. Puoi anche utilizzare la console Cloud de Confiance per modificare il cluster in modo che soddisfi questi requisiti.

Modificare un cluster esistente

  1. Nella console Cloud de Confiance , vai alla pagina Cluster Kubernetes.

    Vai ai cluster Kubernetes

  2. Nella riga del cluster da modificare, fai clic su Altre azioni > Modifica. Viene visualizzata la pagina Dettagli cluster.

  3. Nella sezione Impostazioni di base del cluster, individua la sezione Compatibilità della classe di computing Autopilot.

    Se in questa sezione viene visualizzato Attivato, il cluster è già compatibile con Autopilot. Vai alla sezione Selezionare una ComputeClass Autopilot in un workload.

  4. Se la sezione Compatibilità con la classe di computing Autopilot mostra Disattivata, fai clic su Modifica la compatibilità con la classe di computing Autopilot.

    Se questa sezione non è modificabile, il cluster utilizza un'impostazione permanente incompatibile con la modalità Autopilot. Ad esempio, non puoi modificare i cluster in modo che siano nativi di VPC dopo la creazione. Se non riesci a interagire con la sezione Compatibilità con la classe di computing Autopilot, devi creare un nuovo cluster.

  5. Nel riquadro Compatibilità con la classe di computing Autopilot che si apre, esamina le impostazioni del cluster che devono essere modificate per soddisfare i requisiti della modalità Autopilot.

  6. Fai clic su Abilita la classe di computing Autopilot. GKE modifica il cluster in base alle esigenze.

Modificare un nuovo cluster

  1. Nella console Cloud de Confiance , vai alla pagina Crea un cluster Kubernetes.

    Vai a Crea un cluster Kubernetes

  2. Nella pagina Impostazioni di base del cluster, individua la sezione Massimizza le opzioni di deployment con la classe di computing Autopilot. Questa sezione mostra le impostazioni del cluster che devono essere modificate per soddisfare i requisiti della modalità Autopilot.

  3. Fai clic su Abilita la classe di computing Autopilot. GKE modifica il cluster in base alle esigenze.

  4. Configura le altre impostazioni del cluster in base ai tuoi requisiti. Se modifichi un'impostazione che rende il cluster incompatibile con Autopilot, viene visualizzato un messaggio di avviso.

Seleziona una classe di computing Autopilot in un workload

Puoi eseguire un carico di lavoro in modalità Autopilot nel cluster Standard selezionando una ComputeClass che utilizza la modalità Autopilot. Per eseguire un carico di lavoro in modalità Autopilot, seleziona una delle seguenti opzioni:

Console

  1. Nella Cloud de Confiance console, vai alla pagina Workload di GKE.

    Vai a Carichi di lavoro

  2. Fai clic su Esegui il deployment o Crea job. Viene visualizzata la pagina di creazione del workload per un deployment o un job.

  3. Nella sezione Nodi, seleziona Classe di computing Autopilot.

  4. Nella sezione Seleziona classe di calcolo, seleziona una ComputeClass che utilizza la modalità Autopilot dall'elenco a discesa Classe di calcolo. Questo ComputeClass può essere uno dei seguenti:

  5. Configura e crea il workload.

kubectl CLI

Per selezionare una classe di computing Autopilot in un workload, utilizza un selettore di nodi per l'etichetta cloud.google.com/compute-class. Si tratta della stessa etichetta che utilizzi per selezionare qualsiasi altra ComputeClass in GKE. I seguenti passaggi mostrano come creare un deployment di esempio che seleziona una ComputeClass e verificare che i pod vengano eseguiti in modalità Autopilot:

  1. Salva il seguente esempio di deployment come autopilot-cc-deployment.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

    Sostituisci COMPUTE_CLASS con il nome della classe di calcolo da utilizzare. Questo valore può essere uno dei seguenti:

  2. Esegui il deployment del workload:

    kubectl apply -f autopilot-cc-deployment.yaml
    

Configura una classe di computing Autopilot personalizzata

Puoi configurare ComputeClass personalizzate per utilizzare Autopilot. Utilizza una classe di computing Autopilot personalizzata in situazioni come le seguenti:

  • I tuoi carichi di lavoro richiedono hardware specifici per essere eseguiti in modo ottimale, come GPU o una determinata serie di macchine Compute Engine.
  • Vuoi modificare le impostazioni dei nodi, come zone o taint, mentre utilizzi la piattaforma di calcolo ottimizzata per i container Autopilot.

Se i tuoi carichi di lavoro non soddisfano questi requisiti, ti consigliamo di utilizzare una delle ComputeClass Autopilot integrate. Per selezionare una ComputeClass Autopilot integrata, consulta la sezione Selezionare una ComputeClass Autopilot in un workload precedente.

Crea una nuova ComputeClass Autopilot personalizzata

  1. Salva uno dei seguenti manifest di esempio di ComputeClass:

    • Seleziona macchine specifiche:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: n4-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - machineFamily: n4
          spot: true
          minCores: 16
        - machineFamily: n4
          spot: true
        - machineFamily: n4
          spot: false
        activeMigration:
          optimizeRulePriority: true
      

      Questo manifest include i seguenti campi:

      • autopilot: attiva la modalità Autopilot per ComputeClass. Se specifichi questo campo in una ComputeClass di cui esegui il deployment in un cluster Autopilot, GKE lo ignora.
      • priorities: definisce un array di tre diverse configurazioni della famiglia di macchine N4.
      • activeMigration: consente a GKE di eseguire la migrazione dei pod a configurazioni che hanno una priorità più alta nell'elenco quando le risorse diventano disponibili.
    • Utilizza la piattaforma di calcolo ottimizzata per i container con modifiche:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: general-purpose-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - podFamily: general-purpose
        priorityDefaults:
          location:
            zones: ['us-central1-a','us-central1-b','us-central1-f']
      

      Questo manifest include i seguenti campi:

      • autopilot: attiva la modalità Autopilot per ComputeClass. Se specifichi questo campo in una ComputeClass di cui esegui il deployment in un cluster Autopilot, GKE lo ignora.
      • priorities.podFamily: utilizza la podFamily regola di priorità per eseguire i pod sulla piattaforma di calcolo ottimizzata per i container Autopilot.
      • priorityDefaults.location: definisce le zone in cui GKE deve creare nodi per i pod che utilizzano ComputeClass.
  2. Esegui il deployment di ComputeClass:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Sostituisci PATH_TO_COMPUTECLASS_MANIFEST con il percorso del manifest ComputeClass del passaggio precedente.

  3. Verifica che ComputeClass esista:

    kubectl get computeclasses
    

    L'output è simile al seguente:

    NAME                  AGE
    n4-class              3s
    

Abilitare Autopilot per una ComputeClass personalizzata esistente

Puoi abilitare Autopilot nelle ComputeClass personalizzate esistenti che si trovano in un cluster Standard. L'abilitazione di Autopilot in una ComputeClass che si trova in un cluster Autopilot non ha alcun effetto, perché l'intero cluster utilizza la modalità Autopilot.

Dopo aver abilitato Autopilot per una ComputeClass esistente, GKE utilizza Autopilot per eseguire i nuovi pod che selezionano la ComputeClass. Se hai pod esistenti su nodi Standard che selezionano la classe di computing Autopilot, questi pod utilizzano Autopilot solo quando vengono ricreati.

Per aggiornare una ComputeClass personalizzata esistente in modo da utilizzare la modalità Autopilot, segui questi passaggi:

  1. In un editor di testo, aggiorna il file manifest per la ComputeClass esistente per aggiungere il campo spec.autopilot:

    spec:
      autopilot:
        enabled: true
    
  2. Sostituisci la risorsa ComputeClass esistente nell'API Kubernetes con la specifica aggiornata:

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    Sostituisci PATH_TO_UPDATED_MANIFEST con il percorso del file manifest aggiornato.

  3. Per attivare la creazione di nuovi nodi, ricrea i carichi di lavoro che utilizzano la classe di calcolo.

Dopo aver applicato il manifest aggiornato, tutti i nuovi nodi che GKE crea per questa ComputeClass utilizzano Autopilot. GKE non modifica i nodi esistenti creati prima dell'aggiornamento.

Verifica che il tuo workload utilizzi Autopilot

Seleziona una delle seguenti opzioni:

Console

  1. Nella Cloud de Confiance console, vai alla pagina Workload di GKE.

    Vai a Carichi di lavoro

  2. Per il tuo carico di lavoro, controlla il valore nella colonna Tipo di nodo. Se il workload utilizza la modalità Autopilot, questo valore è Autopilot-managed.

kubectl CLI

Controlla i nomi dei nodi che eseguono i pod:

kubectl get pods -l=app=hello -o wide

L'output è simile al seguente:

NAME                       READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
helloweb-79b9f6f75-5wwc9   1/1     Running   0          152m    10.102.1.135   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
helloweb-79b9f6f75-9skb9   1/1     Running   0          4d3h    10.102.0.140   gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6   <none>           <none>
helloweb-79b9f6f75-h7bdv   1/1     Running   0          152m    10.102.1.137   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>

In questo output, il prefisso gk3- nella colonna Nodo indica che il nodo è gestito da Autopilot.

Applica una classe di computing Autopilot per impostazione predefinita

Puoi impostare una ComputeClass integrata o personalizzata come ComputeClass predefinita per uno spazio dei nomi o per un intero cluster. La ComputeClass predefinita si applica a qualsiasi pod che non seleziona esplicitamente una ComputeClass diversa. Se imposti una ComputeClass Autopilot come predefinita, puoi assicurarti che tutti i pod vengano eseguiti in modalità Autopilot, a meno che un workload non selezioni un'opzione diversa.

Se ComputeClass impostata come predefinita utilizza regole di priorità podFamily, i pod che non selezionano una ComputeClass diversa possono essere eseguiti come pod Autopilot per uso generico. Questo metodo ti consente di utilizzare il modello di fatturazione basato sui pod per impostazione predefinita nel cluster o nello spazio dei nomi ed è utile quando molti dei tuoi carichi di lavoro non hanno requisiti hardware speciali.

Per ulteriori informazioni, consulta Applica ComputeClass ai pod per impostazione predefinita.

Passaggi successivi