Puoi definire set di attributi dei nodi e impostazioni di scalabilità automatica che Google Kubernetes Engine (GKE) utilizza per creare nodi per l'esecuzione dei pod utilizzando ComputeClasses. Questa pagina descrive il funzionamento di ComputeClasses, i casi d'uso, i vantaggi e i tipi di ComputeClasses disponibili.
Queste informazioni sono destinate alle seguenti persone:
- Architetti cloud e ingegneri di piattaforma che vogliono ridurre il sovraccarico associato alla gestione dell'infrastruttura dei cluster.
- Operatori di app e SRE che vogliono concentrarsi sull'esecuzione dei carichi di lavoro senza pensare all'infrastruttura sottostante.
Informazioni su ComputeClasses e sulla scalabilità automatica dei cluster
Una ComputeClass è un insieme di attributi dei nodi e impostazioni di scalabilità automatica che esiste come oggetto API Kubernetes in un cluster GKE. Puoi selezionare una ComputeClass in qualsiasi carico di lavoro Kubernetes di cui esegui il deployment. La scalabilità automatica dei cluster GKE utilizza gli attributi di una ComputeClass per creare nodi per i carichi di lavoro.
Gli ingegneri di piattaforma possono utilizzare ComputeClasses per configurare l'infrastruttura per vari tipi di carichi di lavoro, in modo che ogni nuovo nodo sia ottimizzato per i requisiti specifici delle tue applicazioni. ComputeClasses migliorano la velocità e la flessibilità della scalabilità automatica di GKE e ti forniscono un metodo dichiarativo per configurare le opzioni dell'infrastruttura nei cluster. Per saperne di più, consulta la sezione Vantaggi dell'utilizzo di ComputeClasses.
Funzionalità e funzionalità specifiche di GKE sono disponibili solo con ComputeClasses, ad esempio le seguenti:
- Priorità di computing di fallback: definisci più set di configurazioni dell'infrastruttura in una ComputeClass, con priorità in base alle tue preferenze. Durante la scalabilità, se la configurazione preferita non è disponibile, GKE esegue il fallback alla configurazione successiva.
- **Migrazione attiva ai nodi con priorità più alta**: quando è configurata, GKE sostituisce automaticamente nel tempo i nodi con priorità inferiore nell'elenco delle priorità di fallback con i nodi con priorità più alta. Di conseguenza, i pod vengono eseguiti sui nodi preferiti in una ComputeClass, anche se l'hardware non era disponibile quando hai creato il carico di lavoro.
- Autopilot in GKE Standard: esegui i carichi di lavoro in modalità GKE Autopilot per utilizzare le funzionalità di Autopilot come la piattaforma di computing ottimizzata per i container e la fatturazione basata sui pod, anche nei cluster Standard. GKE gestisce questi nodi e carichi di lavoro, offrendoti i vantaggi della modalità Autopilot in qualsiasi cluster.
Vantaggi di ComputeClasses
ComputeClasses offre agli amministratori e agli operatori della piattaforma vantaggi come i seguenti:
- Miglioramento della disponibilità delle risorse: ComputeClasses espande le funzionalità della scalabilità automatica dei cluster GKE. Le funzionalità di ComputeClass, come le priorità di fallback e i parametri di consolidamento dei nodi possono ridurre il rischio di pod bloccati in stato In attesa e aumentare la gamma di opzioni che puoi utilizzare per scalare i nodi.
- Configurazione dichiarativa a livello di piattaforma: ComputeClasses consente agli ingegneri di piattaforma di descrivere in modo dichiarativo le configurazioni dei nodi per vari tipi di carichi di lavoro. La scalabilità automatica di GKE gestisce la creazione e la configurazione di nodi e node pool. Puoi integrare ComputeClasses nelle pipeline CI/CD per garantire la coerenza dell'infrastruttura di cui è stato eseguito il provisioning nella tua piattaforma.
- Riduzione del sovraccarico di gestione: ComputeClasses riduce la complessità della gestione dell'infrastruttura e dei carichi di lavoro su larga scala. Gli ingegneri di piattaforma dichiarano le classi di infrastruttura e gli operatori di app selezionano una classe pertinente in un carico di lavoro. GKE gestisce la scalabilità, la configurazione hardware dei nodi e applica incompatibilità, tolleranze ed etichette.
Informazioni sulla risorsa personalizzata ComputeClass
ComputeClasses sono risorse personalizzate di Kubernetes. Puoi definire la specifica di una ComputeClass in un file manifest e crearla nei cluster, in modo simile a come definisci e crei le risorse dei carichi di lavoro Kubernetes come deployment e servizi.
Il seguente manifest di esempio definisce una ComputeClass denominata n4:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: n4
spec:
nodePoolAutoCreation:
enabled: true
priorities:
- machineFamily: n4
- machineFamily: n2
whenUnsatisfiable: DoNotScaleUp
Quando un pod seleziona questa ComputeClass, GKE esegue le seguenti operazioni quando crea nuovi nodi:
- GKE crea nodi che utilizzano la serie di macchine N4.
- Se la serie di macchine N4 non è disponibile, GKE crea nodi che utilizzano invece la serie di macchine N2.
- Se la serie di macchine N2 non è disponibile, GKE attende che le risorse diventino disponibili per pianificare il pod.
Puoi controllare varie impostazioni per i nodi utilizzando ComputeClasses, inclusi acceleratori, impostazioni di sistema dei nodi, località dei nodi e il comportamento di fallback di GKE quando le risorse hardware non sono disponibili. Per saperne di più su tutte le configurazioni disponibili per ComputeClasses, consulta la definizione della risorsa personalizzata ComputeClass.
Selezione di ComputeClass nei carichi di lavoro
Per utilizzare una ComputeClass per un carico di lavoro GKE, seleziona la
ComputeClass nel manifest del carico di lavoro utilizzando un
selettore di nodi
per l'etichetta cloud.google.com/compute-class.
Il seguente manifest di deployment di esempio seleziona una ComputeClass:
Sostituisci COMPUTE_CLASS con il nome di una ComputeClass esistente nel cluster. Ad esempio, puoi specificare la n4
ComputeClass dalla
sezione
Informazioni sulla risorsa personalizzata ComputeClass o la autopilot
ComputeClass integrata.
Configurazione dei nodi nelle specifiche dei carichi di lavoro
I cluster GKE Autopilot e il provisioning automatico dei nodi in GKE Standard ti consentono di utilizzare i selettori di nodi nei pod per creare nodi con proprietà specifiche come famiglie di macchine, VM spot, GPU o TPU. ComputeClasses ti consente di definire centralmente questi requisiti anziché aggiungere singoli selettori a ogni carico di lavoro.
Informazioni sull'applicazione di ComputeClasses per impostazione predefinita
Puoi configurare GKE in modo che applichi una ComputeClass per impostazione predefinita ai pod che non selezionano una ComputeClass specifica. Puoi definire una ComputeClass predefinita per spazi dei nomi specifici o per un intero cluster. Per saperne di più su come configurare i cluster o gli spazi dei nomi con una classe predefinita, consulta Applicare ComputeClasses ai pod per impostazione predefinita.
La seguente tabella descrive gli effetti dell'impostazione di una ComputeClass come predefinita per uno spazio dei nomi o per un cluster:
| Effetti di ComputeClasses predefinite | |
|---|---|
| Valore predefinito a livello di spazio dei nomi |
|
| Valore predefinito a livello di cluster |
|
Se GKE applica una ComputeClass predefinita a livello di spazio dei nomi a un pod, questo pod non attiverà la ComputeClass predefinita a livello di cluster, perché GKE aggiunge un selettore di nodi per la classe predefinita a livello di spazio dei nomi al pod.
Migrazione attiva in ComputeClasses predefinite
Se la ComputeClass che utilizzi come predefinita a livello di spazio dei nomi o di cluster ha il campo activeMigration.optimizeRulePriority impostato su true, potresti notare i seguenti effetti:
- Classe di computing predefinita a livello di cluster: la migrazione attiva potrebbe essere attivata se esistono nodi con priorità inferiore e GKE può creare nodi con priorità più alta. A seconda del numero di nodi con priorità inferiore, la migrazione potrebbe aumentare l'interruzione del carico di lavoro.
- Classe di computing predefinita a livello di spazio dei nomi: la migrazione attiva non viene attivata perché GKE inserisce il selettore di nodi della classe di computing solo nei pod appena creati. I pod esistenti non vengono ricreati automaticamente con il selettore.
ComputeClasses predefinite a livello di cluster
Quando abiliti ComputeClasses predefinite a livello di cluster, un oggetto ComputeClass denominato default definisce le regole di scalabilità automatica dei nodi per il cluster. Se il cluster ha già una ComputeClass denominata default, GKE utilizza la configurazione di ComputeClass per il cluster. Se il cluster non ha una ComputeClass personalizzata denominata default, GKE si comporta come se fossero applicate le seguenti regole ComputeClass:
spec:
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Per impostazione predefinita, GKE non applica alcun comportamento di fallback e non modifica la configurazione dei nodi con scalabilità automatica. Per applicare proprietà specifiche ai nodi con scalabilità automatica per impostazione predefinita, devi eseguire il deployment di una ComputeClass personalizzata denominata default.
Tieni presente quanto segue quando configuri la classe di computing predefinita a livello di cluster:
- Per evitare che i pod rimangano in stato
Pending, imposta il campospec.whenUnsatisfiablesuScaleUpAnyway. Questo valore consente a GKE di creare nodi anche se i pod richiedono famiglie di macchine Compute Engine che non sono incluse nelle regole di priorità per la classe predefinita a livello di cluster. Se vuoi forzare questi pod a utilizzare le famiglie di macchine incluse nella ComputeClass predefinita, imposta questo campo suDoNotScaleUp. - Per limitare le modifiche alla ComputeClass
default, utilizza un ClusterRole RBAC per limitare le operazioni update, patch, delete e create sulla risorsaComputeClassdenominatadefault. - Per modificare i parametri di consolidamento dei nodi predefiniti del gestore della scalabilità automatica dei cluster, utilizza il campo
spec.autoscalingPolicynella specifica di ComputeClass. I parametri specificati per questo campo nella ComputeClass predefinita a livello di cluster si applicano a tutti i nodi del cluster. Per saperne di più, consulta Impostare i parametri di scalabilità automatica per il consolidamento dei nodi.
Passaggi successivi
- Scopri di più su ComputeClasses integrate
- Scopri di più su ComputeClasses personalizzate
- Leggi la definizione della risorsa personalizzata ComputeClass
- Esegui il deployment di una ComputeClass e selezionala in un carico di lavoro