Puoi definire set di attributi dei nodi e impostazioni di scalabilità automatica che Google Kubernetes Engine (GKE) utilizza per creare nodi per eseguire pod utilizzando ComputeClasses. Questa pagina descrive il funzionamento, i casi d'uso e i vantaggi di ComputeClasses, nonché i tipi disponibili.
Queste informazioni sono destinate alle seguenti persone:
- Architetti cloud e ingegneri di piattaforma che vogliono ridurre il sovraccarico associato alla gestione dell'infrastruttura del cluster.
- Operatori di app e SRE che vogliono concentrarsi sul funzionamento dei carichi di lavoro senza pensare all'infrastruttura sottostante.
Informazioni su ComputeClass 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 workload Kubernetes che implementi. La scalabilità automatica dei cluster GKE utilizza gli attributi di una ComputeClass per creare nodi per i carichi di lavoro.
Gli ingegneri della piattaforma possono utilizzare ComputeClass 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. Le ComputeClass migliorano la velocità e la flessibilità della scalabilità automatica di GKE e ti forniscono un metodo dichiarativo per configurare le opzioni dell'infrastruttura nei tuoi cluster. Per ulteriori informazioni, consulta la sezione Vantaggi dell'utilizzo di ComputeClass.
Funzionalità e caratteristiche specifiche di GKE sono disponibili solo con ComputeClass, ad esempio le seguenti:
- Priorità di calcolo di riserva: definisci più set di configurazioni dell'infrastruttura in una ComputeClass, con priorità in base alle tue preferenze. Durante lo scaling, se la configurazione preferita non è disponibile, GKE esegue il failover alla configurazione successiva.
- Migrazione attiva a nodi con priorità più alta: se configurato, GKE sostituisce automaticamente i nodi che si trovano più in basso nell'elenco delle priorità di fallback con nodi che si trovano più in alto nell'elenco nel tempo. Di conseguenza, i tuoi pod vengono eseguiti sui nodi preferiti in una ComputeClass, anche se l'hardware non era disponibile quando hai creato il workload.
- Autopilot in GKE Standard: esegui i carichi di lavoro in modalità GKE Autopilot per utilizzare le funzionalità di Autopilot come la piattaforma di calcolo 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:
- Migliore ottenibilità delle risorse: le ComputeClass espandono le funzionalità della scalabilità automatica del cluster GKE. Le funzionalità di ComputeClass, come le priorità di fallback e i parametri di consolidamento dei nodi, possono ridurre il rischio che i pod rimangano in stato Pending e aumentare la gamma di opzioni che puoi utilizzare per scalare i nodi.
- Configurazione dichiarativa a livello di piattaforma: le ComputeClass consentono agli ingegneri della piattaforma di descrivere in modo dichiarativo le configurazioni dei nodi per vari tipi di workload. La scalabilità automatica di GKE gestisce la creazione e la configurazione di nodi e pool di nodi. Puoi integrare le tue ComputeClass nelle pipeline CI/CD per garantire la coerenza dell'infrastruttura di cui è stato eseguito il provisioning sulla tua piattaforma.
- Overhead di gestione ridotto: ComputeClass riduce la complessità della gestione dell'infrastruttura e dei carichi di lavoro su larga scala. Gli ingegneri della piattaforma dichiarano le classi di infrastruttura e gli operatori delle app selezionano una classe pertinente in un workload. GKE gestisce lo scaling, la configurazione dell'hardware dei nodi e applica incompatibilità, tolleranze ed etichette.
Informazioni sulla risorsa personalizzata ComputeClass
ComputeClass sono risorse personalizzate di Kubernetes. Puoi definire la specifica di una ComputeClass in un file manifest e crearla nei tuoi 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 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, tra cui acceleratori, impostazioni di sistema dei nodi, posizioni dei nodi e comportamento di fallback di GKE quando le risorse hardware non sono disponibili. Per ulteriori informazioni su tutte le configurazioni disponibili per ComputeClass, consulta la CustomResourceDefinition di ComputeClass.
Selezione di ComputeClass nei workload
Per utilizzare una ComputeClass per un workload GKE, seleziona la ComputeClass nel manifest del workload utilizzando un selettore di nodi per l'etichetta cloud.google.com/compute-class
.
Il seguente manifest di Deployment seleziona una ComputeClass:
Sostituisci COMPUTE_CLASS
con il nome di una ComputeClass
esistente nel cluster. Ad esempio, puoi specificare n4
ComputeClass dalla sezione
Informazioni sulla risorsa personalizzata ComputeClass
o dalla autopilot
ComputeClass integrata.
Configurazione dei nodi nelle specifiche del workload
I cluster GKE Autopilot e il provisioning automatico dei nodi in GKE Standard ti consentono di utilizzare i selettori di nodi nei tuoi pod per creare nodi con proprietà specifiche come famiglie di macchine, VM spot o GPU e TPU. ComputeClasses ti consente di definire centralmente questi requisiti anziché aggiungere selettori individuali a ogni workload.
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 ulteriori informazioni su come configurare i cluster o gli spazi dei nomi con una classe predefinita, consulta Applicare ComputeClass ai pod per impostazione predefinita.
La tabella seguente descrive gli effetti dell'impostazione di una ComputeClass come predefinita per uno spazio dei nomi o per un cluster:
Effetti delle ComputeClass 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 attiva 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.
ComputeClass predefinite a livello di cluster
Quando abiliti le ComputeClass predefinite a livello di cluster, un oggetto ComputeClass
denominato default
definisce le regole di scalabilità automatica dei nodi per il cluster. Se il tuo
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 di scalabilità automatica per impostazione predefinita, devi eseguire il deployment di una ComputeClass personalizzata denominata default
.
Tieni presente quanto segue quando configuri la classe di calcolo a livello di cluster predefinita:
- Per evitare che i pod rimangano bloccati nello stato
Pending
, imposta il campospec.whenUnsatisfiable
suScaleUpAnyway
. Questo valore consente a GKE di creare nodi anche se i pod richiedono famiglie di macchine Compute Engine che non rientrano nelle regole di priorità per la classe predefinita a livello di cluster. Se vuoi forzare questi pod a utilizzare le famiglie di macchine presenti in ComputeClass predefinita, imposta questo campo suDoNotScaleUp
. - Per limitare le modifiche a
default
ComputeClass, utilizza un ClusterRole RBAC per limitare le operazioni update, patch, delete e create sulla risorsaComputeClass
denominatadefault
. - Per modificare i parametri di consolidamento dei nodi predefiniti del gestore della scalabilità automatica del cluster,
utilizza il campo
spec.autoscalingPolicy
nella specifica 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ù, vedi 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 di risorsa personalizzata ComputeClass
- Esegui il deployment di una ComputeClass e selezionala in un workload