Informazioni sulle classi di calcolo personalizzate


Questa pagina descrive come utilizzare le classi di calcolo personalizzate per controllare le proprietà dei nodi di cui Google Kubernetes Engine (GKE) esegue il provisioning durante l'autoscaling del cluster. Questo documento è rivolto agli amministratori della piattaforma che vogliono definire in modo dichiarativo i profili di scalabilità automatica per i nodi, in modo che carichi di lavoro specifici vengano eseguiti su hardware che soddisfi i loro requisiti.

Panoramica delle classi di calcolo

In GKE, una classe di calcolo è un profilo costituito da un insieme di attributi dei nodi che GKE utilizza per eseguire il provisioning dei nodi su cui vengono eseguiti i carichi di lavoro. Le classi di calcolo possono avere come target ottimizzazioni specifiche, come il provisioning di nodi ad alte prestazioni o l'assegnazione della priorità alle configurazioni ottimizzate per i costi per ridurre i costi di gestione. Le classi di calcolo personalizzate ti consentono di definire profili che GKE utilizza poi per eseguire il provisioning di nodi che soddisfano strettamente i requisiti di carichi di lavoro specifici.

Le classi di calcolo personalizzate sono disponibili per l'utilizzo nella modalità GKE Autopilot e nella modalità GKE Standard nella versione 1.30.3-gke.1451000 e successive e offrono un approccio dichiarativo per definire gli attributi dei nodi e le priorità di scalabilità automatica. Per impostazione predefinita, le classi di calcolo personalizzate sono disponibili per la configurazione e l'utilizzo in tutti i cluster GKE idonei.

Vantaggi delle classi di computing personalizzate

Le classi di calcolo personalizzate offrono i seguenti vantaggi:

  • Priorità di calcolo di riserva: definisci una gerarchia di configurazioni dei nodi in ogni classe di calcolo per consentire a GKE di dare la priorità. Se la configurazione più preferita non è disponibile, GKE sceglie automaticamente la configurazione successiva nella gerarchia. Questo modello di riserva garantisce che anche quando le risorse di calcolo non sono disponibili, i carichi di lavoro vengano comunque eseguiti su hardware ottimizzato con ritardi di pianificazione minimi.
  • Controllo della scalabilità automatica granulare: definisci le configurazioni dei nodi migliori adatta a carichi di lavoro specifici. GKE dà la priorità a quelle durante la creazione dei nodi durante la scalabilità.
  • Configurazione dichiarativa dell'infrastruttura: adotta un approccio dichiarativo alla gestione dell'infrastruttura, in modo che GKE crea nodi corrispondenti ai requisiti specifici dei tuoi carichi di lavoro.
  • Migrazione attiva: se nella tua località diventano disponibili risorse di calcolo per una configurazione della macchina più preferita, GKE esegue automaticamente la migrazione dei carichi di lavoro a nuovi nodi che utilizzano la configurazione preferita.
  • Ottimizzazione dei costi: dai la priorità ai tipi di nodi economici come le VM spot per ridurre le spese del cluster.
  • Classi di calcolo predefinite per gli spazi dei nomi: imposta una classe di calcolo predefinita in ogni spazio dei nomi Kubernetes in modo che i carichi di lavoro in quel determinato spazio dei nomi vengano eseguiti su hardware ottimizzato anche se non richiedono una classe di calcolo specifica.
  • Soglie di consolidamento dei nodi personalizzate: definisci soglie di utilizzo delle risorse personalizzate per i nodi. Se l'utilizzo delle risorse di un nodo specifico è inferiore a di sicurezza, GKE tenta di consolidare i carichi di lavoro un nodo simile e disponibile e lo scale down del nodo sottoutilizzato.

Casi d'uso per classi di computing personalizzate

Valuta la possibilità di utilizzare classi di computing personalizzate in scenari come i seguenti:

  • Vuoi eseguire i tuoi carichi di lavoro AI/ML su configurazioni GPU specifiche.
  • Vuoi impostare configurazioni hardware predefinite per i carichi di lavoro specifici team, sottraendo il carico di lavoro agli operatori delle applicazioni.
  • Esegui carichi di lavoro con prestazioni ottimali su Compute Engine specifici di macchine virtuali o configurazioni hardware.
  • Vuoi dichiarare configurazioni hardware che soddisfino requisiti aziendali specifici, ad esempio alte prestazioni, ottimizzazione dei costi o alta disponibilità.
  • Vuoi che GKE torni gerarchicamente all'utilizzo di configurazioni hardware specifiche durante la mancata disponibilità delle risorse di calcolo, in modo che i carichi di lavoro vengano sempre eseguiti su macchine adatte ai relativi requisiti.
  • Vuoi decidere in modo centralizzato le configurazioni ottimali per il parco risorse della tua azienda, in modo che i costi siano più prevedibili e i carichi di lavoro vengano eseguiti in modo più affidabile.

Limitazioni

Non puoi utilizzare classi di calcolo personalizzate con prenotazioni della capacità di Compute Engine in modalità Autopilot o in pool di nodi in modalità Standard con provisioning automatico. Modalità Standard creata manualmente i pool di nodi supportano le prenotazioni della capacità.

Come funzionano i classi di calcolo personalizzati

Le classi di computing personalizzate sono una risorsa personalizzata di Kubernetes che esegue il provisioning dell'infrastruttura Google Cloud. Definisci un oggetto ComputeClass nel cluster, quindi richiedi la classe di calcolo nei carichi di lavoro o impostala come predefinita per uno spazio dei nomi Kubernetes. Quando esegui il deployment di un carico di lavoro che richiede la classe di calcolo, GKE tenta di posizionare i pod su nodi che soddisfano i requisiti della classe di calcolo.

Per assicurarti che le classi di calcolo personalizzate siano ottimizzate per il tuo parco risorse, tieni conto delle seguenti linee guida:

  • Comprendi i requisiti di calcolo del tuo parco, inclusi eventuali requisiti hardware specifici dell'applicazione.
  • Scegli un tema che guidi la progettazione di ogni classe di computing. Ad esempio, una classe di calcolo ottimizzata per le prestazioni potrebbe avere una strategia di riserva che utilizza solo tipi di macchine con potenza CPU elevata.
  • Decidi la famiglia di macchine e la serie di macchine Compute Engine che più adatti ai tuoi carichi di lavoro. Per maggiori dettagli, vedi Guida alle risorse e al confronto per le famiglie di macchine.
  • Pianifica una strategia di riserva all'interno di ogni classe di calcolo in modo che i carichi di lavoro vengano sempre eseguiti su nodi che utilizzano configurazioni di macchine simili. Ad esempio, se N4 non è disponibile, puoi ricorrere alle macchine N2.

Visualizza la definizione di risorsa personalizzata completa

Per visualizzare la definizione completa della risorsa personalizzata (CRD) per la risorsa personalizzata ComputeClass, esegui il seguente comando:

kubectl describe crd computeclasses.cloud.google.com

L'output mostra l'intero CRD, inclusi tutti i campi supportati e le relazioni tra i campi. Per comprendere meglio le classi di calcolo personalizzate, consulta a questa definizione durante la lettura del documento.

Pianificare una classe di calcolo personalizzata

Per pianificare, implementare e utilizzare efficacemente una classe di calcolo personalizzata nel cluster, segui questi passaggi:

  1. Scegli le priorità di calcolo di riserva: definisci una priorità di regole che regolano le proprietà dei nodi che GKE crea per la classe Compute.
  2. Configura i pool di nodi di GKE Standard e le classi di calcolo: Per i cluster in modalità Standard, esegui i passaggi di configurazione richiesti per utilizzare la classe Compute con i tuoi pool di nodi.
  3. Definire il comportamento di scalabilità quando non vengono applicate regole di priorità: se vuoi, puoi indicare a GKE cosa fare se non è possibile eseguire il provisioning dei nodi che soddisfano le tue regole di priorità.
  4. Imposta i parametri di scalabilità automatica per il consolidamento dei nodi: GKE: quando consolidare i carichi di lavoro e rimuovere quelli sottoutilizzati nodi.
  5. Configura la migrazione attiva a nodi con priorità più elevata: facoltativamente, puoi chiedere a GKE di spostare i carichi di lavoro sui nodi più preferiti man mano che l'hardware diventa disponibile.

Scegli le priorità di calcolo di riserva

Il vantaggio principale di usare una classe di computing personalizzata è avere il controllo la strategia di riserva quando i tuoi nodi preferiti non sono disponibili a causa di fattori come esaurimento delle risorse e limiti di quota.

Per creare una strategia di riserva, definisci un elenco di regole prioritarie nel tuo e una classe di computing personalizzata. Quando un cluster deve essere scalato, GKE dà la priorità alla creazione di nodi che corrispondono alla prima regola di priorità. Se GKE non può creare questi nodi, utilizza la priorità successiva la regola, ripetendo questo processo fino a quando GKE fa lo scale up cluster o l'esaurimento di tutte le regole. Se tutte le regole sono state soddisfatte, GKE crea nodi in base al comportamento predefinito o specificato descritti in Definisci il comportamento di scalabilità quando non sono applicabili regole di priorità.

Regole di priorità

Definisci le regole di priorità nel campo spec.priorities della ComputeClass risorsa personalizzata. Ogni regola nel campo priorities descrive le proprietà di dei nodi di cui eseguire il provisioning. GKE elabora il campo priorities che indica che il primo elemento nel campo ha la priorità più alta il provisioning dei nodi.

A seconda del tipo di regola di priorità, puoi specificare ulteriori come le VM spot o la capacità minima della CPU, GKE da utilizzare durante il provisioning dei nodi. Il campo priorities supporta i seguenti tipi di regole di priorità:

  • machineFamily: definisce i nodi utilizzando una serie di macchine Compute Engine, ad esempio n2 o c3.
  • machineType: definisce i nodi utilizzando un tipo di macchina Compute Engine predefinito, ad esempio n2-standard-4.
  • nodepools: nei cluster GKE Standard, fornisce un elenco di pool di nodi creati manualmente associati all'infrastruttura in cui GKE deve eseguire il provisioning dei nodi.

Tipo di regola machineFamily

Il campo machineFamily accetta una serie di macchine Compute Engine come n2 o c3. Se non specificato, il valore predefinito è e2. Puoi utilizzare le seguenti opzioni accanto al tipo di regola machineFamily:

  • spot: VM spot. Il valore predefinito è false.
  • minCores: numero minimo di vCPU per nodo. Il valore predefinito è 0.
  • minMemoryGb: memoria minima per nodo. Il valore predefinito è 0.
  • storage.bootDiskKMSKey: percorso della chiave Cloud Key Management Service da utilizzare per la crittografia del disco di avvio.

Nell'esempio seguente viene mostrata la regola di priorità machineFamily:

priorities:
- machineFamily: n2
  spot: true
  minCores: 16
  minMemoryGb: 64
  storage:
    bootDiskKMSKey: projects/example/locations/us-central1/keyRings/example/cryptoKeys/key-1

tipo di regola machineType

Il campo machineType accetta un tipo di macchina predefinito di Compute Engine, ad esempio n2-standard-32. Il tipo di macchina deve supportare le GPU da te specificato.

Puoi utilizzare i seguenti campi insieme al tipo di regola machineType:

  • spot: utilizza VM spot. Il valore predefinito è false.
  • storage: configura lo spazio di archiviazione del nodo.
    • storage.bootDiskType: tipo di disco di avvio.
    • storage.bootDiskKMSKey: percorso della chiave Cloud KMS da utilizzare per la crittografia del disco di avvio.
    • storage.bootDiskSize: dimensioni in GB per il disco di avvio del nodo.
    • storage.localSSDCount: numero di SSD locali da collegare al nodo. Se specificato, deve essere almeno 1.
  • gpu: configura le GPU.

L'esempio seguente mostra una regola machineType per la macchina n2-standard-32 tipi:

priorities:
- machineType: n2-standard-32
  spot: true
  storage:
    bootDiskType: pd-balanced
    bootDiskSize: 250
    localSSDCount: 2
    bootDiskKMSKey: projects/example/locations/us-central1/keyRings/example/cryptoKeys/key-1

L'esempio seguente mostra una regola machineType per le GPU:

priorities:
- machineType: g2-standard-16
  spot: false
  gpu:
    type: nvidia-l4
    count: 1

Tipo di regola nodepools

Il campo nodepools accetta un elenco di pool di nodi esistenti su cui GKE tenta di creare pod in attesa. GKE non esegue ed elaborare i valori in questo campo in ordine. Non puoi specificare altre proprietà della macchina accanto a questo campo nello stesso elemento della regola di priorità. Questo campo è supportato solo in modalità GKE Standard. Per maggiori dettagli sull'utilizzo, consulta Scegliere come target pool di nodi specifici in una definizione di classe di calcolo.

Come GKE crea i nodi utilizzando le regole di priorità

Quando esegui il deployment di un carico di lavoro che richiede una classe di calcolo e occorre un nuovo nodo, GKE elabora l'elenco di regole nel campo priorities della specifica ComputeClass in ordine.

Ad esempio, considera la seguente specifica:

spec:
  ...
  priorities:
  - machineFamily: n2
    spot: true
    minCores: 64
  - machineFamily: n2
    spot: true
  - machineFamily: n2
    spot: false

Quando esegui il deployment di un carico di lavoro che richiede una classe di computing con queste priorità di controllo, GKE associa i nodi nel modo seguente:

  1. GKE posiziona i pod su tutti i nodi esistenti associati a questa classe di calcolo.
  2. Se i nodi esistenti non sono in grado di ospitare i pod, GKE esegue il provisioning di nuovi nodi che utilizzano la serie di macchine N2, sono VM a spot e dispongono di almeno 64 vCPU.
  3. Se nella regione non sono disponibili VM N2 Spot con almeno 64 vCPU, GKE esegue il provisioning di nuovi nodi che utilizzano VM N2 Spot in grado di adattarsi ai pod, indipendentemente dal numero di core.
  4. Se non sono disponibili VM Spot N2 nella regione, GKE esegue il provisioning di nuove VM N2 on demand.
  5. Se nessuna delle regole precedenti può essere soddisfatta, GKE segue la logica descritta nella sezione Definire il comportamento di scalabilità quando non vengono applicate regole di priorità.

Pool di nodi GKE Standard e classi di calcolo

Se utilizzi la modalità GKE Standard, potresti dover eseguire una configurazione manuale per assicurarti che la pianificazione dei pod della classe di calcolo avvenga come previsto.

Configura pool di nodi creati manualmente per l'utilizzo delle classi di computing

Se i tuoi cluster GKE Standard hanno pool di nodi creati manualmente senza il provisioning automatico dei nodi, devi configurarli per associarli a classi di calcolo specifiche. Solo GKE pianifica i pod che richiedono una classe di computing specifica sui nodi nei pool di nodi che associ a quella classe di computing. Autopilot di GKE e i pool di nodi in modalità GKE Standard creati mediante provisioning automatico dei nodi, questa configurazione verrà eseguita automaticamente per te.

Per associare un pool di nodi creato manualmente a una classe di calcolo, aggiungi etichette dei nodi e contaminazioni dei nodi al pool di nodi durante la creazione o un aggiornamento specificando il flag --node-labels e il flag --node-taints, come segue:

  • Etichetta del nodo: cloud.google.com/compute-class=COMPUTE_CLASS
  • Contaminati: cloud.google.com/compute-class=COMPUTE_CLASS:NoSchedule

In questi attributi, COMPUTE_CLASS è il nome della classe di calcolo personalizzata.

Ad esempio, il seguente comando aggiorna un pool di nodi esistente e lo associa alla classe di calcolo dev-class:

gcloud container node-pools update dev-pool \
    --cluster=example-cluster \
    --node-labels="cloud.google.com/compute-class=dev-class" \
    --node-taints="cloud.google.com/compute-class=dev-class:NoSchedule"

Puoi associare ogni pool di nodi nel tuo cluster a una classe di computing personalizzata. Pod che GKE pianifica solo su questi pool di nodi creati manualmente attivare la creazione di nodi all'interno dei pool di nodi durante gli eventi di scalabilità automatica.

Provisioning automatico dei nodi e classi di calcolo

Puoi utilizzare il provisioning automatico dei nodi con una classe di computing personalizzata GKE crea ed elimina automaticamente i pool di nodi in base regole di priorità.

Per utilizzare il provisioning automatico dei nodi con una classe di calcolo, devi eseguire i seguenti passaggi:

  1. Assicurati che il provisioning automatico dei nodi sia abilitato nel cluster.
  2. Aggiungi il campo nodePoolAutoCreation con il valore enabled: true alla specifica ComputeClass.

GKE può quindi posizionare pod che utilizzano classi di calcolo che configurano il provisioning automatico dei nodi sui nuovi pool di nodi. GKE decide se eseguire lo scale up di un pool di nodi esistente o crearne uno nuovo in base a fattori quali le dimensioni dei cluster e i requisiti dei pod. Pod con classi di calcolo il provisioning automatico dei nodi continua a fare lo scale up solo del nodo esistente piscine.

Puoi usare classi di computing che interagiscono con il provisioning automatico dei nodi e le classi di computing che interagiscono con i pool di nodi creati manualmente nello stesso cluster.

Considera le seguenti interazioni con il provisioning automatico dei nodi:

  • Non puoi utilizzare famiglia di macchine o il VM spot selettori di nodi, perché sono in conflitto con il comportamento della classe di computing. GKE rifiuta tutti i pod che richiedono una classe di computing solo per le VM spot o per serie di macchine specifiche.
  • Puoi configurare il provisioning automatico dei nodi per le classi di calcolo che utilizzano il campo nodepools per fare riferimento ai pool di nodi esistenti. Il provisioning automatico dei nodi elabora le priorità in ordine e tenta di eseguire lo scale up dei pool di nodi esistenti per posizionare i pod.

Prendi in considerazione il seguente esempio di un cluster che dispone sia di pool di nodi creati manualmente sia di provisioning automatico dei nodi:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - nodepools: [manually-created-pool]
  - machineFamily: n2
  - machineFamily: n2d
  nodePoolAutoCreation:
    enabled: true

In questo esempio, GKE tenta di eseguire le seguenti operazioni:

  1. Crea nuovi nodi nel pool di nodi manually-created-pool.
  2. Esegui il provisioning dei nodi N2 nei pool di nodi N2 esistenti o creando un nuovo pool di nodi.
  3. Se GKE non riesce a creare nodi N2, tenta di eseguire lo scaling up dei pool di nodi N2D esistenti o di creare nuovi pool di nodi N2D.

Scegli come target pool di nodi specifici in una definizione di classe di calcolo

Il campo priorities.nodepools consente di specificare un elenco di elementi creati manualmente pool di nodi in cui GKE tenta di pianificare i pod senza specificare nell'ordine dei cluster GKE Standard che utilizzano e la scalabilità automatica. Questo campo supporta solo un elenco di pool di nodi. non puoi specificare Altre proprietà della macchina, come la serie di macchine, nella stessa regola di priorità. Quando esegui il deployment di un carico di lavoro che richiede una classe di computing con un nodo denominato nei pool, GKE tenta di pianificare i pod in attesa nel nodo piscine. GKE potrebbe creare nuovi nodi in questi pool di nodi da posizionare tra i pod.

I pool di nodi specificati nel campo priorities.nodepools devono essere associati alla classe di calcolo utilizzando le etichette dei nodi e gli elementi di contaminazione dei nodi, come descritto nella sezione Configurare i pool di nodi creati manualmente per le classi di calcolo.

L'elenco di pool di nodi specificato nel campo nodepools non contiene la priorità. Per configurare un ordine di riserva per i pool di nodi denominati, devi specificare più elementi priorities.nodepools separati. Ad esempio, considera la seguente specifica:

spec:
  ...
  priorities:
  - nodepools: [pool1, pool2]
  - nodepools: [pool3]

In questo esempio, GKE tenta innanzitutto di posizionare i pod in attesa richiedi questa classe di computing su nodi esistenti in pool di nodi etichettati con la classe compute. Se i nodi esistenti non sono disponibili, GKE tenta di eseguire il provisioning di nuovi nodi in pool1 o pool2. Se GKE non riesce a eseguire il provisioning di nuovi nodi in questi pool di nodi, tenta di eseguire il provisioning di nuovi pod in pool3.

Definire il comportamento di scalabilità quando non vengono applicate regole di priorità

La risorsa personalizzata ComputeClass ti consente di specificare cosa deve fare GKE se non sono presenti nodi che possono soddisfare una delle regole di priorità. La Il campo whenUnsatisfiable della specifica supporta i seguenti valori:

  • ScaleUpAnyway: crea un nuovo nodo che utilizzi la configurazione predefinita della macchina del cluster. Questo è il comportamento standard.
    • Nei cluster Autopilot, GKE posiziona il pod su un nodo nuovo o esistente, indipendentemente dalla configurazione della macchina del nodo.
    • Nei cluster Standard che non utilizzano il provisioning automatico dei nodi, GKE tenta di fare lo scale up di qualsiasi pool di nodi creato manualmente definisce un'etichetta e un'incompatibilità corrispondenti a una determinata classe di computing.
    • Nei cluster standard che utilizzano il provisioning automatico dei nodi, GKE potrebbe creare un nuovo pool di nodi che utilizza la serie di macchine E2 predefinita per posizionare il pod.
  • DoNotScaleUp: lascia il pod nello stato Pending finché non è disponibile un nodo che soddisfa i requisiti della classe di calcolo.

Imposta i parametri di scalabilità automatica per il consolidamento dei nodi

Per impostazione predefinita, GKE rimuove i nodi sottoutilizzati dai carichi di lavoro in esecuzione, consolidandoli su altri nodi con capacità. Per tutte le classi di computing, questo è il comportamento predefinito perché tutti i cluster che utilizzano le classi di computing devono usare il gestore della scalabilità automatica dei cluster o sono Autopilot cluster. Durante il consolidamento dei nodi, GKE svuota un nodo sottoutilizzato, ricrea i carichi di lavoro su un altro nodo e poi elimina il nodo svuotato.

I tempi e i criteri per la rimozione dei nodi dipendono dal profilo di scalabilità automatica. Puoi perfezionare le soglie di sottoutilizzo delle risorse che attivano la rimozione dei nodi e il consolidamento dei carichi di lavoro utilizzando la sezione autoscalingPolicy nella definizione della classe di calcolo personalizzata. Puoi ottimizzare i seguenti aspetti parametri:

  • consolidationDelayMinutes: il numero di minuti dopo i quali GKE rimuove i nodi sottoutilizzati
  • consolidationThreshold: la soglia di utilizzo di CPU e memoria come la percentuale di risorse disponibili del nodo. GKE prende in considerazione la rimozione dei nodi solo se l'utilizzo delle risorse è inferiore a questa soglia.
  • gpuConsolidationThreshold: la soglia di utilizzo della GPU come percentuale delle risorse disponibili del nodo. GKE prende in considerazione la rimozione dei nodi solo se l'utilizzo delle risorse è inferiore a questa soglia. Valuta la possibilità di impostarlo su 100 o su 0 in modo che GKE consolida tutti i nodi che non hanno un utilizzo del 100% di GPU collegate.

Considera il seguente esempio:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - machineFamily: n2
  - machineFamily: n2d
  autoscalingPolicy:
    consolidationDelayMinutes: 5
    consolidationThreshold: 70

In questa configurazione, GKE rimuove i nodi inutilizzati dopo cinque minuti e i nodi diventano candidati per il consolidamento solo se sia l'utilizzo della CPU sia quello della memoria sono inferiori al 70%.

Configura la migrazione attiva a nodi con priorità più elevata

La migrazione attiva è una funzionalità facoltativa di scalabilità automatica nelle classi di calcolo personalizzate che sostituisce automaticamente i nodi esistenti più in basso nell'elenco di priorità di riserva di una classe di calcolo con nuovi nodi più in alto nell'elenco di priorità. In questo modo, tutti i pod in esecuzione vengono eseguiti sull'infrastruttura nodi per quella classe di computing, anche se all'inizio GKE doveva eseguire su nodi meno preferiti.

Quando si verifica una migrazione attiva, GKE crea nuovi nodi in base alle regole di priorità della classe di calcolo, quindi estrae ed elimina i nodi obsoleti di priorità inferiore. La migrazione avviene gradualmente per ridurre al minimo l'interruzione del carico di lavoro. La migrazione attiva prevede le seguenti considerazioni:

  • Se hai attivato il provisioning automatico dei nodi sui tuoi cluster standard, la migrazione attiva potrebbe attivare la creazione di nuovi pool di nodi se quelli esistenti non soddisfano i criteri di priorità più elevata definiti nella classe di calcolo personalizzata.
  • Per evitare interruzioni del carico di lavoro critico, la migrazione attiva non sposta i seguenti pod:
    • Pod che hanno impostato un PodDisruptionBudget, se il trasferimento supererebbe il valore del PodDisruptionBudget.
    • che contengono Annotazione cluster-autoscaler.kubernetes.io/safe-to-evict: "false".

Considera l'esempio di specifica della classe di computing riportata di seguito, che assegna la priorità Nodi N2 su nodi N2D:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: my-class
spec:
  priorities:
  - machineFamily: n2
  - machineFamily: n2d
  activeMigration:
    optimizeRulePriority: true

Se i nodi N2 non erano disponibili quando hai eseguito il deployment di un pod con questa classe di computing, GKE avrebbe usato i nodi N2D come opzione di riserva. Se i nodi N2 diventano disponibili per il provisioning in un secondo momento, ad esempio se la tua quota aumenta o se le VM N2 diventano disponibili nella tua località, GKE crea un nuovo nodo N2 e esegue gradualmente la migrazione del pod dal nodo N2D esistente al nuovo nodo N2. GKE elimina il nodo N2D obsoleto.

Richiedi classi di calcolo nei carichi di lavoro

Per utilizzare una classe di computing personalizzata al termine della progettazione, il pod deve richiedere esplicitamente questa classe di computing nella specifica del pod. Se vuoi, puoi impostare facoltativamente una classe di calcolo come predefinita in uno spazio dei nomi Kubernetes specifico, in questo caso i pod in quel determinato spazio dei nomi utilizzeranno quella classe di calcolo, a meno che i pod non richiedano una classe di calcolo diversa.

Per istruzioni su come richiedere e utilizzare classi di computing in GKE, consulta Controlla gli attributi dei nodi con scalabilità automatica con classi di computing personalizzate.

Passaggi successivi