Gli amministratori dei cluster e gli operatori delle applicazioni possono usufruire dei vantaggi di Google Kubernetes Engine (GKE) Autopilot, come i prezzi e le impostazioni preconfigurate, nei cluster in modalità Standard. Questo documento mostra come utilizzare ComputeClasses per eseguire il deployment di un carico di lavoro Autopilot in un cluster Standard. Dovresti già conoscere i seguenti concetti:
Informazioni su ComputeClasses Autopilot
GKE fornisce risorse personalizzate di Kubernetes denominate ComputeClasses che possono essere sottoposte a deployment nel cluster come qualsiasi altra risorsa Kubernetes. Una ComputeClass definisce un elenco di configurazioni dei nodi, come tipi di macchine o VM spot. Puoi selezionare ComputeClasses nei carichi di lavoro, indicando a GKE che tutti i nuovi nodi devono utilizzare una delle configurazioni in questo 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 predefinite di funzionalità e sicurezza di Autopilot. Per ulteriori
informazioni sulle implicazioni dell'esecuzione di un carico di lavoro Autopilot nei
cluster Standard, incluse le differenze che potresti notare
quando esegui il deployment di questi carichi di lavoro, consulta
Informazioni sui carichi di lavoro in modalità Autopilot in GKE Standard.
Tipi di ComputeClasses Autopilot
GKE fornisce ComputeClasses Autopilot integrate che puoi utilizzare per la maggior parte dei carichi di lavoro per uso generico. Puoi anche configurare una ComputeClass personalizzata nuova o esistente per utilizzare la modalità Autopilot. Il tipo di ComputeClass Autopilot che utilizzi dipende dal fatto che i carichi di lavoro richiedano hardware specifico, come segue:
- Carichi di lavoro per uso generico: utilizza una delle ComputeClasses Autopilot integrate, che inseriscono i pod nella piattaforma di computing ottimizzata per i container.
- Carichi di lavoro che richiedono hardware specifico: abilita la modalità Autopilot per qualsiasi ComputeClass personalizzata, esegui il deployment di ComputeClass nel cluster e seleziona ComputeClass nei carichi di lavoro.
Per ulteriori informazioni su queste opzioni, su quando utilizzarle e sui prezzi di ciascuna opzione, consulta Selezione dell'hardware in ComputeClasses 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 utilizzata da GKE per creare nodi per i carichi di lavoro. Per ulteriori informazioni, consulta la sezione Prezzi in "Informazioni sui carichi di lavoro in modalità Autopilot in GKE Standard".
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.
- Utilizza un cluster GKE Standard che soddisfi tutti i requisiti. Per creare un nuovo cluster, consulta Creazione di un cluster regionale.
- Per evitare il rifiuto dei carichi di lavoro, scopri i requisiti e i vincoli di sicurezza di Autopilot. Per ulteriori informazioni, consulta Impostazioni predefinite per i nodi Autopilot.
Requisiti
Il cluster deve eseguire una delle seguenti versioni di GKE:
- Per utilizzare Autopilot in ComputeClasses, il cluster deve eseguire la versione 1.34.1-gke.1829001 o successive.
- Per utilizzare le regole di priorità
podFamilyin ComputeClasses Autopilot personalizzate, 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 NetworkPolicy di Kubernetes, il cluster deve utilizzare GKE Dataplane V2. Per impostazione predefinita, tutti i nuovi cluster utilizzano GKE Dataplane V2.
Se il cluster non utilizza GKE Dataplane V2, devi disabilitare l'applicazione forzata delle policy di rete.
Limitazioni
- La famiglia di pod
general-purpose-arme la classe di computingautopilot-armsono disponibili solo tramite i cluster Autopilot. I cluster Standard con nodi Autopilot saranno supportati in una versione successiva. - Per aggiornare le ComputeClasses esistenti nel cluster in modo che utilizzino la modalità Autopilot, devi ricrearle con una specifica aggiornata. Per ulteriori informazioni, consulta Abilitare Autopilot per una ComputeClass personalizzata esistente.
- Le ComputeClasses Autopilot integrate non supportano l'abilitazione di Confidential GKE Nodes per l'intero cluster. Se abiliti Confidential GKE Nodes per il cluster, tutti i nuovi pod che selezionano le ComputeClasses Autopilot integrate rimangono indefinitamente nello stato
Pending. - L'applicazione forzata delle policy di rete Calico non è supportata. Devi utilizzare GKE Dataplane V2 o disabilitare l'applicazione forzata delle policy di rete.
- Il nome di ComputeClass non può iniziare con
gkeoautopilot, che sono prefissi riservati.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per eseguire il deployment di ComputeClasses, chiedi all'amministratore di concederti il ruolo IAM Sviluppatore Kubernetes Engine (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 Google Cloud console per verificare se il cluster Standard soddisfa tutti i requisiti per l'esecuzione dei carichi di lavoro in modalità Autopilot. Puoi anche utilizzare la Google Cloud console per modificare il cluster in modo che soddisfi questi requisiti.
Modificare un cluster esistente
Nella Google Cloud console, vai alla pagina Cluster Kubernetes.
Nella riga del cluster che vuoi modificare, fai clic su Altre azioni > Modifica. Viene visualizzata la pagina Dettagli cluster.
Nella sezione Informazioni di base sul cluster, individua la sezione Compatibilità con la classe di computing Autopilot.
Se in questa sezione viene visualizzato Abilitato, il cluster è già compatibile con Autopilot. Vai alla sezione Selezionare una ComputeClass Autopilot in un carico di lavoro.
Se nella sezione Compatibilità con la classe di computing Autopilot viene visualizzato Disabilitato, fai clic su Modifica la compatibilità con la classe di computing Autopilot.
Se questa sezione non è disponibile per la modifica, 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 del cluster. Se non puoi interagire con la sezione Compatibilità con la classe di computing Autopilot, devi creare un nuovo cluster.
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.
Fai clic su Abilita la classe di computing Autopilot. GKE modifica il cluster in base alle esigenze.
Modificare un nuovo cluster
Nella Google Cloud console, vai alla pagina **Crea un cluster Kubernetes**.
Nella pagina Informazioni di base sul cluster, individua la sezione Massimizza le opzioni di deployment con la classe di computing Autopilot. In questa sezione vengono mostrate le impostazioni del cluster che devono essere modificate per soddisfare i requisiti della modalità Autopilot.
Fai clic su Abilita la classe di computing Autopilot. GKE modifica il cluster in base alle esigenze.
Configura 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.
Selezionare una ComputeClass Autopilot in un carico di lavoro
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
Nella Google Cloud console, vai alla pagina Carichi di lavoro di GKE.
Fai clic su Esegui il deployment o Crea job. Viene visualizzata la pagina di creazione del carico di lavoro per un deployment o un job.
Nella sezione Nodi, seleziona Classe di computing Autopilot.
Nella sezione Seleziona la classe di computing, nell'elenco a discesa Classe di computing, seleziona una ComputeClass che utilizza la modalità Autopilot. Questa ComputeClass può essere una delle seguenti:
Una delle seguenti ComputeClasses Autopilot integrate, che inseriscono i carichi di lavoro per uso generico nella piattaforma di computing ottimizzata per i container Autopilot:
autopilotautopilot-spot
Una ComputeClass che crei, ad esempio la
n4-classComputeClass descritta nella sezione Configurare una ComputeClass Autopilot personalizzata.
Configura e crea il carico di lavoro.
kubectl CLI
Per selezionare una ComputeClass Autopilot in un carico di lavoro, 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 passaggi seguenti mostrano come creare un deployment di esempio che seleziona una ComputeClass e verificare che i pod vengano eseguiti in modalità Autopilot:
Salva il seguente deployment di esempio come
autopilot-cc-deployment.yaml:Sostituisci
COMPUTE_CLASScon il nome della classe di computing da utilizzare. Questo valore può essere uno dei seguenti:Una delle seguenti ComputeClasses Autopilot integrate, che inseriscono i carichi di lavoro per uso generico nella piattaforma di computing ottimizzata per i container Autopilot:
autopilotautopilot-spot
Una ComputeClass che crei, ad esempio la
n4-classComputeClass descritta nella sezione Configurare una ComputeClass Autopilot personalizzata.
Esegui il deployment del carico di lavoro:
kubectl apply -f autopilot-cc-deployment.yaml
Configurare una ComputeClass Autopilot personalizzata
Puoi configurare ComputeClasses personalizzate per utilizzare Autopilot. Utilizza una ComputeClass Autopilot personalizzata in situazioni come le seguenti:
- I carichi di lavoro richiedono hardware specifico 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, utilizzando la piattaforma di computing ottimizzata per i container Autopilot.
Se i carichi di lavoro non soddisfano questi requisiti, ti consigliamo di utilizzare una delle ComputeClasses Autopilot integrate. Per selezionare una ComputeClass Autopilot integrata, consulta la sezione precedente Selezionare una ComputeClass Autopilot in un carico di lavoro.
Creare una nuova ComputeClass Autopilot personalizzata
Salva uno dei seguenti manifest di ComputeClass di esempio:
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: trueQuesto manifest include i seguenti campi:
autopilot: abilita 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 con priorità più alta nell'elenco delle priorità quando le risorse diventano disponibili.
Utilizza la piattaforma di computing 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: abilita 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 regola di prioritàpodFamilyper eseguire i pod sulla piattaforma di computing ottimizzata per i container Autopilot.priorityDefaults.location: definisce le zone in cui GKE deve creare i nodi per i pod che utilizzano ComputeClass.
Esegui il deployment di ComputeClass:
kubectl apply -f PATH_TO_COMPUTECLASS_MANIFESTSostituisci
PATH_TO_COMPUTECLASS_MANIFESTcon il percorso del manifest di ComputeClass del passaggio precedente.Verifica che ComputeClass esista:
kubectl get computeclassesL'output è simile al seguente:
NAME AGE n4-class 3s
Abilitare Autopilot per una ComputeClass personalizzata esistente
Puoi abilitare Autopilot nelle ComputeClasses personalizzate esistenti in un cluster Standard. L'abilitazione di Autopilot in una ComputeClass 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 ComputeClass. Se hai pod esistenti sui nodi Standard che selezionano la ComputeClass Autopilot, questi pod utilizzano Autopilot solo quando vengono ricreati.
Per aggiornare una ComputeClass personalizzata esistente in modo che utilizzi la modalità Autopilot:
In un editor di testo, aggiorna il file manifest della ComputeClass esistente per aggiungere il campo
spec.autopilot:spec: autopilot: enabled: trueSostituisci la risorsa
ComputeClassesistente nell'API Kubernetes con la specifica aggiornata:kubectl replace --force -f PATH_TO_UPDATED_MANIFESTSostituisci
PATH_TO_UPDATED_MANIFESTcon il percorso del file manifest aggiornato.Per attivare la creazione di nuovi nodi, ricrea tutti i carichi di lavoro che utilizzano la classe di computing.
Dopo aver applicato il manifest aggiornato, tutti i nuovi nodi creati da GKE per questa ComputeClass utilizzano Autopilot. GKE non modifica i nodi esistenti creati prima dell'aggiornamento.
Verificare che il carico di lavoro utilizzi Autopilot
Seleziona una delle seguenti opzioni:
Console
Nella Google Cloud console, vai alla pagina Carichi di lavoro di GKE.
Per il carico di lavoro, controlla il valore nella colonna Tipo di nodo. Se il carico di lavoro utilizza la modalità Autopilot, questo valore è Gestito da Autopilot.
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.
Applicare una ComputeClass 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 tutti i pod che non selezionano 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 carico di lavoro non selezioni un'opzione diversa.
Se la ComputeClass impostata come predefinita utilizza le 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 Applicare ComputeClasses ai pod per impostazione predefinita.
Passaggi successivi
- Per i parametri che puoi specificare in ComputeClasses, consulta la definizione della risorsa personalizzata ComputeClass.