Informazioni sulla creazione automatica del pool di nodi

Google Kubernetes Engine (GKE) può creare e gestire automaticamente i pool di nodi nei cluster in base alla configurazione dei carichi di lavoro. Questo documento descrive il funzionamento della creazione automatica dei pool di nodi, i parametri di scalabilità e il comportamento predefinito e fornisce consigli che possono aiutarti a migliorare la scalabilità. Questo documento è destinato agli amministratori dei cluster che vogliono ridurre i costi associati alla gestione manuale dell'infrastruttura nei cluster in modalità Standard.

Dovresti già avere familiarità con i seguenti concetti:

In modalità Autopilot, GKE crea e gestisce sempre nodi e node pool in base ai tuoi carichi di lavoro. Non è necessario configurare manualmente la creazione automaticapool di nodil per i cluster Autopilot o per i carichi di lavoro Autopilot nei cluster standard. Per saperne di più, consulta la panoramica di GKE Autopilot.

Che cos'è la creazione automatica di pool di nodi?

In GKE, i node pool sono gruppi logici di nodi. Ogni nodo in un pool di nodi ha la stessa configurazione di ogni altro nodo nello stesso pool. La creazione automatica di node pool è un meccanismo di scalabilità automatica dell'infrastruttura che consente a GKE di creare nuovi node pool nel cluster che soddisfano i requisiti dei tuoi workload. GKE gestisce questi node pool creati automaticamente, eseguendo attività come l'aggiornamento dei metadati dei nodi, la creazione e l'eliminazione dei nodi nel pool di nodi e l'eliminazione dell'intero pool di nodi quando non è più necessario. La creazione automatica di node pool è un'estensione del gestore della scalabilità automatica dei cluster di GKE, che scala automaticamente i nodi nei singoli node pool.

La creazione automatica dei node pool è progettata per consentire a GKE di eseguire automaticamente fare lo scale down e rimuovere i node pool vuoti dal cluster. Non puoi impostare un numero minimo di nodi che ogni pool di nodi creato automaticamente deve avere, perché un numero minimo maggiore di zero impedirebbe la rimozione dei node pool vuoti. Se il tuo caso d'uso richiede un numero minimo di nodi da eseguire sempre nel cluster, crea manualmente un pool di nodi con la scalabilità automatica abilitata.

Come funziona

La creazione automatica dei node pool estende il gestore della scalabilità automatica dei cluster GKE per consentire a GKE di eseguire il provisioning di nuovi node pool che soddisfano i requisiti hardware e le richieste di risorse dei pod in attesa. Puoi definire i requisiti hardware nei seguenti modi:

  • Utilizza ComputeClasses, che poi selezioni in vari pod utilizzando un selettore di nodi. Consigliamo questo metodo perché puoi definire centralmente configurazioni di nodi comuni che possono essere utilizzate da più carichi di lavoro.
  • Utilizza selettori di nodi o affinità dei nodi per richiedere etichette di nodi GKE specifiche nelle specifiche dei pod.

GKE configura i nuovi node pool in base a parametri come i seguenti:

GKE configura la capacità delle risorse di ogni nodo in un pool di nodi creato automaticamente in modo che sia maggiore o uguale alle richieste di risorse dei pod in attesa. Devi assicurarti che le richieste di risorse siano sufficientemente grandi perché il pod funzioni come previsto. Se le richieste di pod sono troppo basse, i pod non verranno eseguiti come previsto dopo che GKE li pianifica sui nodi creati automaticamente.

Configurazione dei metadati dei nodi

GKE configura anche i metadati dei nodi (come etichette, annotazioni e taint dei nodi) in base ai requisiti del carico di lavoro, come nei seguenti esempi:

  • Se richiedi la serie di macchine N2, GKE aggiunge l'etichetta del nodo cloud.google.com/machine-family: n2 a ciascun nodo.
  • Se selezioni una ComputeClass nel pod, GKE aggiunge un'etichetta del nodo con la chiave cloud.google.com/compute-class impostata sul nome della ComputeClass.
  • Se il tuo pod ha sia una tolleranza sia un selettore di nodi per la stessa etichetta di nodo, GKE aggiunge taint dei nodi per queste tolleranze ai nodi creati automaticamente.

Eliminazione dei node pool creati automaticamente

La creazione automatica dei node pool consente al gestore della scalabilità automatica dei cluster di creare nuovi node pool e nodi per eseguire i pod in attesa in entrata. Se il numero di pod in un pool di nodi creato automaticamente diminuisce, il gestore della scalabilità automatica del cluster riduce gradualmente le dimensioni del pool di nodi. Quando possibile, GKE svuota i nodi sottoutilizzati nel pool di nodi, consolida i pod su altri nodi e rimuove i nodi vuoti.

Se il numero di nodi in un pool di nodi creato automaticamente è zero, GKE elimina ilpool di nodil. GKE non elimina i node pool che escludi dalla creazione automatica, ad esempio i node pool creati manualmente. Per ulteriori informazioni su come il gestore della scalabilità automatica dei cluster riduce i node pool, consulta Come funziona il gestore della scalabilità automatica dei cluster.

Preferenze di scalabilità di GKE

Quando GKE esegue la scalabilità automatica della tua infrastruttura, si applicano le seguenti preferenze:

  • Riduzione delle risorse di calcolo sprecate: GKE utilizza la capacità delle risorse dei node pool esistenti creati automaticamente nel cluster per determinare il tipo di macchina da utilizzare per i nuovi node pool. Man mano che le dimensioni del cluster aumentano, GKE preferisce utilizzare tipi di macchine più grandi per i nuovi node pool, in modo che un numero maggiore di pod possa essere eseguito su ogni nodo del pool di nodi.
  • Ottimizza scalabilità e latenza: GKE dà sempre la priorità all'aumento di scalabilità dei node pool esistenti e compatibili anziché alla creazione di nuovi node pool. La forza di questa preferenza aumenta man mano che aumenta il numero di pool di nodi distinti nel cluster. Quando il numero di node pool distinti si avvicina ai limiti supportati per latenza e scalabilità ottimali, GKE de-prioritizza la creazione di nuovi node pool.

Queste priorità contribuiscono a garantire che i cluster abbiano un utilizzo efficiente delle risorse di calcolo su larga scala, come nei seguenti scenari di esempio:

  • Nei cluster con un numero ridotto di pool di nodi e un utilizzo inferiore delle risorse, GKE crea nuovi pool di nodi più frequentemente e utilizza tipi di macchine più piccoli per questi pool di nodi.
  • Nei cluster con un numero elevato di pool di nodi, l'utilizzo delle risorse è elevato. GKE crea nuovi node pool meno frequentemente e utilizza tipi di macchina più grandi per questi node pool, in modo che la pianificazione dei pod possa continuare, rallentando al contempo i progressi verso i limiti di scalabilità e latenza del cluster.

Puoi controllare manualmente le dimensioni minime delle istanze che GKE utilizza per i node pool creati automaticamente utilizzando una ComputeClass con il campo priorities.machineFamily e il campo priorities.minCores o il campo priorities.minMemoryGb.

Metodi di attivazione per la creazione automatica del pool di nodi

GKE può creare automaticamente pool di nodi per ComputeClass specifiche o per qualsiasi carico di lavoro che utilizzi una configurazione compatibile, a seconda di come configuri il cluster.

Metodi di attivazione
A livello di workload (consigliato)

In GKE versione 1.33.3-gke.1136000 e successive, utilizza ComputeClass per attivare la creazione automaticapool di nodil senza utilizzare il provisioning automatico dei nodi a livello di cluster. GKE crea nuovi node pool solo per i workload che selezionano ComputeClass specifiche con la creazione automatica abilitata. I carichi di lavoro esistenti nel cluster non sono interessati.

Anche nelle versioni di GKE precedenti alla 1.33.3-gke.1136000, le ComputeClass sono il modo consigliato per richiedere e configurare l'infrastruttura per i tuoi carichi di lavoro. ComputeClasses forniscono funzionalità uniche e ti offrono un modo flessibile per ottimizzare lo scaling nel tuo cluster. Per ulteriori informazioni, vedi Informazioni su ComputeClass personalizzate.

A livello di cluster

Abilita il provisioning automatico dei nodi per l'intero cluster. Devi impostare limiti per risorse come CPU e memoria nel cluster. Questi limiti si applicano all'intero cluster. La configurazione a livello di cluster è necessaria per abilitare la creazione automatica dipool di nodil nelle versioni di GKE precedenti a 1.33.3-gke.1136000.

GKE può creare nuovi node pool per qualsiasi carico di lavoro in attesa nel cluster utilizzando ComputeClass o selettori nelle specifiche dei pod.

Questi metodi di configurazione non si escludono a vicenda. Puoi utilizzare ComputeClasses per creare automaticamente pool di nodi nei cluster che utilizzano il provisioning automatico dei nodi. Se utilizzi entrambi questi metodi per attivare la creazione automatica pool di nodi in un cluster, GKE utilizza il seguente ordine di preferenza per trovare il valore di un'impostazione di configurazione da utilizzare per un pool di nodi:

  1. Specifica di ComputeClass o Pod: se specifichi un'impostazione (ad esempio un tipo di macchina) in una ComputeClass o in una specifica di Pod, GKE utilizza questa impostazione.
  2. Valore predefinito del provisioning automatico dei nodi a livello di cluster: se un'impostazione non è specificata in una ComputeClass o in una specifica del pod, GKE verifica se hai impostato un valore predefinito per il provisioning automatico dei nodi nel cluster. Se esiste un valore predefinito a livello di cluster, GKE lo utilizza.
  3. Valore predefinito a livello di cluster: se un'impostazione non è specificata in ComputeClasses, nelle specifiche dei pod o come valore predefinito per il provisioning automatico dei nodi a livello di cluster, GKE utilizza il valore predefinito impostato da Google Cloud per il cluster.

Ad esempio, considera uno scenario in cui GKE tenta di trovare un tipo di macchina da utilizzare per unpool di nodil creato automaticamente. L'ordine di preferenza precedente si applica come segue:

  1. GKE controlla se la specifica del pod o la ComputeClass del pod specifica un tipo di macchina.
  2. Se la specifica del pod o ComputeClass non specifica un tipo di macchina, GKE verifica se hai impostato un tipo di macchina predefinito per il provisioning automatico dei nodi nel cluster.
  3. Se non hai impostato un tipo di macchina predefinito per il provisioning automatico dei nodi, GKE utilizza il tipo di macchina predefinito del cluster.

Nella maggior parte dei casi, ti consigliamo di utilizzare solo il metodo di attivazione ComputeClass. Le sezioni seguenti forniscono dettagli su ciascuno di questi metodi di configurazione, inclusi eventuali limiti e considerazioni.

Attivazione a livello di workload con ComputeClasses

Puoi abilitare la creazione automatica del pool di nodi per qualsiasi ComputeClass nel cluster utilizzando uno dei seguenti campi nella specifica ComputeClass:

  • nodePoolAutoCreation: consente a GKE di creare automaticamente i node pool in base alle necessità. Puoi comunque interagire con i pool di nodi. GKE implementa solo le impostazioni o i vincoli che configuri.
  • autopilot: esegui i carichi di lavoro che selezionano questa ComputeClass in modalità Autopilot. Analogamente a un cluster Autopilot, GKE gestisce completamente i nodi per te e implementa vari vincoli e impostazioni di Autopilot. Se utilizzi il campo autopilot, puoi saltare questo documento. Per ulteriori informazioni, consulta Informazioni sui workload in modalità Autopilot in Standard.

Nei cluster che soddisfano i seguenti requisiti, puoi utilizzare questi campi in una ComputeClass senza abilitare il provisioning automatico dei nodi a livello di cluster:

  • Utilizza GKE 1.33.3-gke.1136000 e versioni successive.
  • Sono registrati nel canale di rilascio rapido.

Se configuri la creazione automatica di pool di nodi in una ComputeClass senza abilitare il provisioning automatico dei nodi per il cluster, GKE crea nuovi node pool solo per i workload che utilizzano ComputeClass. Gli altri workload non sono interessati.

Il seguente manifest ComputeClass di esempio attiva la creazione automatica pool di nodi per qualsiasi pod che utilizza ComputeClass:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: example-computeclass
spec:
  priorities:
  - machineFamily: n4
  - machineFamily: c4
  whenUnsatisfiable: ScaleUpAnyway
  nodePoolAutoCreation:
    enabled: true

Abilitazione a livello di cluster con il provisioning automatico dei nodi

Per abilitare la creazione automatica pool di nodi per l'intero cluster, abilita la funzionalità di provisioning automatico dei nodi per il cluster utilizzando l'API Google Kubernetes Engine. Il provisioning automatico dei nodi consente a GKE di creare nuovi node pool in base alle esigenze di qualsiasi workload nel cluster in base alle specifiche dei pod o alle configurazioni di ComputeClass. GKE non gestisce i node pool esistenti nel cluster, ma puoi contrassegnare i singoli node pool come sottoposti a provisioning automatico dopo aver abilitato il provisioning automatico dei nodi per il cluster.

Abilita il provisioning automatico dei nodi in situazioni come le seguenti:

  • Vuoi che GKE crei automaticamente i node pool in un cluster che esegue una versione di GKE precedente alla 1.33.3-gke.1136000.
  • Vuoi impostare manualmente i limiti delle risorse a livello di cluster. Nelle versioni di GKE precedenti alla 1.33.3-gke.1136000, devi impostare limiti di risorse a livello di cluster anche se utilizzi ComputeClass.

  • Vuoi utilizzare funzionalità o configurazioni specifiche non supportate da ComputeClasses.

  • Vuoi impostare i valori di configurazione dei nodi predefiniti per l'intero cluster.

Dopo aver attivato il provisioning automatico dei nodi, puoi configurare i valori predefiniti per varie impostazioni dei nodi utilizzando Google Cloud CLI o un file di configurazione YAML.

Limiti delle risorse a livello di cluster con il provisioning automatico dei nodi

Quando abiliti il provisioning automatico dei nodi per un intero cluster, devi anche configurare i limiti per risorse come CPU, memoria, GPU e TPU nel cluster. Questi limiti si applicano alla somma di tutta la capacità delle risorse nel cluster, inclusi i node pool e le ComputeClass creati manualmente. GKE non crea nuovi nodi o node pool se l'operazione supera uno di questi limiti delle risorse.

Questi limiti delle risorse a livello di cluster sono necessari solo se abiliti il provisioning automatico dei nodi nel cluster. Nei cluster che soddisfano i seguenti requisiti, puoi utilizzare la creazione automatica di pool di nodi in ComputeClass senza abilitare il provisioning automatico dei nodi:

  • Utilizza GKE 1.33.3-gke.1136000 e versioni successive.
  • Sono registrati nel canale di rilascio rapido.

Se il cluster soddisfa questi requisiti, ti consigliamo di utilizzare solo ComputeClasses per configurare i pool di nodi creati automaticamente.

Impostazioni predefinite per i node pool creati automaticamente

Puoi specificare i valori predefiniti che GKE applica ai node pool creati automaticamente a livello di workload o di cluster.

  • Impostazioni predefinite a livello di workload: puoi utilizzare il campo spec.nodePoolConfig e il campo spec.priorityDefaults nella specifica ComputeClass per impostare i valori predefiniti per impostazioni specifiche dei nodi. Questi valori predefiniti si applicano solo ai pool di nodi che GKE crea per ComputeClass.
  • Impostazioni predefinite a livello di cluster: puoi impostare valori predefiniti per i node pool creati automaticamente quando configuri il provisioning automatico dei nodi. Per specificare i valori predefiniti, utilizza gcloud CLI o un file di configurazione YAML.

Questi metodi di impostazione dei valori predefiniti non si escludono a vicenda. Se configuri valori predefiniti per un'impostazione specifica in un ComputeClass e per l'intero cluster, GKE utilizza il valore per ComputeClass. Se ComputeClass non specifica un valore per questa impostazione, GKE utilizza il valore predefinito a livello di cluster.

Impostazioni predefinite a livello di cluster con un file di configurazione

Quando attivi il provisioning automatico dei nodi, puoi utilizzare un file di configurazione YAML per specificare le impostazioni predefinite a livello di cluster per i pool di nodi creati automaticamente. Puoi specificare più impostazioni in un unico file di configurazione. Alcune configurazioni avanzate (come le impostazioni di riparazione automatica) possono essere specificate solo utilizzando un file di configurazione.

  • Il seguente file di configurazione di esempio abilita la riparazione automatica e l'upgrade automatico dei nodi per tutti i nuovi pool di nodi creati automaticamente:

    management:
      autoRepair: true
      autoUpgrade: true
    
  • Il seguente file di configurazione di esempio imposta i limiti delle risorse a livello di cluster per il provisioning automatico dei nodi e configura più impostazioni predefinite:

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
      - resourceType: 'nvidia-tesla-t4'
        maximum: 4
    management:
      autoRepair: true
      autoUpgrade: true
    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    diskSizeGb: 100
    

    Questo file di configurazione imposta i seguenti valori predefiniti:

Dopo aver applicato il file di configurazione al cluster, GKE utilizza le impostazioni nel file solo per i nuovi pool di nodi creati automaticamente nel cluster. Le impostazioni nuove o modificate specificate nel file non vengono applicate ai node pool esistenti creati da GKE nel cluster. Se aggiorni un valore precedentemente impostato per il cluster, GKE utilizza il nuovo valore per tutti i nuovi pool di nodi. Ad esempio, se in precedenza hai impostato la serie di macchine predefinita su N2 e aggiorni il valore a N4 nel file di configurazione, tutti i nuovi pool di nodi utilizzano i tipi di macchine N4.

Per saperne di più su come utilizzare il file di configurazione a livello di cluster, consulta Configurare le impostazioni con un file di configurazione del provisioning automatico dei nodi.

Casi d'uso della creazione automatica del node pool

Le sezioni seguenti descrivono alcuni casi d'uso comuni e l'hardware supportato per la creazione automatica di pool di nodi. Per ulteriori informazioni su casi d'uso aggiuntivi e configurazioni supportate, consulta la documentazione relativa al tuo caso d'uso specifico.

Selezione della serie di macchine o del tipo di macchina

Puoi selezionare una serie di macchine o un tipo di macchina Compute Engine da utilizzare per i pool di nodi creati automaticamente in GKE in uno dei seguenti modi:

  • ComputeClasses: utilizza le machineFamily o le machineType regole di priorità.
  • Specifiche del pod: per una serie di macchine, utilizza un selettore di nodi per l'etichetta del nodo cloud.google.com/machine-family. Per un tipo di macchina, utilizza sia l'etichetta del nodo cloud.google.com/machine-family sia quella node.kubernetes.io/instance-type. Per ulteriori informazioni, vedi Selezionare una serie o un tipo di macchina.

Se non selezioni esplicitamente una macchina, GKE utilizza la serie di macchine E2 o un tipo di macchina compatibile con l'hardware richiesto dal tuo workload. Ad esempio, GKE utilizza tipi di macchine GPU per le GPU e macchine specializzate per le risorse TPU.

Quando richiedi una serie di macchine o un tipo di macchina, assicurati che gli altri selettori di nodi e le richieste di risorse del pod siano compatibili con la macchina specificata. Ad esempio, non puoi richiedere una GPU e la serie di macchine N2 contemporaneamente.

Serie di macchine supportate

Puoi richiedere esplicitamente qualsiasi serie di macchine o tipo di macchina Compute Engine supportato in un ComputeClass o in un workload. La creazione automatica dei pool di nodi supporta le seguenti serie di macchine solo in versioni GKE specifiche:

  • Serie di macchine Z3: 1.29 e versioni successive.
  • Serie di macchine C4:
    • 1.28.15-gke.1159000 e versioni successive.
    • 1.29.10-gke.1227000 e versioni successive.
    • 1.30.3-gke.1225000 e versioni successive.
  • Serie di macchine C4A:
    • 1.28.15-gke.1344000 e versioni successive.
    • 1.29.11-gke.1012000 e versioni successive.
    • 1.30.7-gke.1136000 e versioni successive.
    • 1.31.3-gke.1056000 e versioni successive.
  • Serie di macchine C4D: 1.32.3-gke.1717000 e versioni successive.
  • Serie di macchine N4: 1.29.3 e versioni successive.

Le altre serie di macchine sono supportate in tutte le versioni di GKE.

Selezione della GPU

Puoi richiedere GPU per i node pool creati automaticamente in uno dei seguenti modi:

  • ComputeClasses:
    1. Utilizza la regola di priorità gpu per configurare le GPU.
    2. Richiedi risorse GPU nei pod.
  • Specifiche del pod:
    1. Configura i limiti di GPU a livello di cluster per il provisioning automatico dei nodi.
    2. Utilizza i selettori di nodi per configurare le GPU.
    3. Richiedi risorse GPU nei pod.

GKE seleziona un tipo di macchina GPU sufficientemente grande da supportare il numero di GPU. Il numero di GPU selezionate influisce sulla capacità di CPU e memoria dei nodi.

Selezione di Cloud TPU

Puoi richiedere risorse Cloud TPU per i pool di nodi creati automaticamente in uno dei seguenti modi:

Sia i node pool TPU con sezioni a host singolo sia i node pool TPU con sezioni multi-host supportano la scalabilità automatica e la creazione automatica di pool di nodi. Per la creazione automatica del pool di nodi, GKE crea node pool di sezioni TPU single-host o multi-host con una versione e una topologia TPU che soddisfano i requisiti dei carichi di lavoro in attesa.

Requisiti di versione di GKE per Cloud TPU

La creazione automatica del node pool supporta le seguenti Cloud TPU solo in versioni GKE specifiche:

  • Cloud TPU v5p:
    • 1.28.7-gke.1020000 e versioni successive.
    • 1.29.2-gke.1035000 e versioni successive.
  • TPU Trillium: 1.31.1-gke.1146000 e versioni successive.

Gli altri tipi di Cloud TPU sono supportati in tutte le versioni di GKE.

Scalabilità automatica del pool di nodi Cloud TPU

GKE esegue lo scale dei node pool Cloud TPU creati automaticamente o manualmente che utilizzano lo strumento di scalabilità automatica del cluster in uno dei seguenti modi:

  • Pool di nodi della sezione TPU a singolo host: GKE aggiunge o rimuove nodi TPU nel node pool esistente. Il pool di nodi può contenere un numero qualsiasi di nodi TPU compreso tra zero e le dimensioni massime del pool di nodi determinate dai flag di scalabilità automatica --max-nodes e --total-max-nodes. Tutti i nodi TPU nel pool di nodi hanno lo stesso tipo di macchina e la stessa topologia. Per saperne di più su come creare un pool di nodi TPU slice single-host, consulta Creare un pool di nodi.
  • Node pool di sezioni TPU multi-host: GKE aumenta in modo atomico ilpool di nodil da zero al numero di nodi richiesti per soddisfare la topologia TPU. Ad esempio, con un pool di nodi TPU con il tipo di macchina ct5lp-hightpu-4t e una topologia di 16x16, il pool di nodi ha sempre 64 nodi o zero nodi. GKE riduce le dimensioni del pool di nodi se non sono presenti workload TPU nel pool di nodi. Per ridurre le dimensioni del pool di nodi, GKE elimina tutti i pod pianificati e rimuove tutti i nodi nel pool di nodi. Per saperne di più su come creare un pool di nodi TPU multi-host, consulta Creare un node pool.

Configurazione del pool di nodi Cloud TPU

GKE utilizza la configurazione nel pod o in ComputeClass per determinare la configurazione dei nodi TPU. Il seguente manifest è un esempio di una specifica di deployment che richiede TPU nella specifica del pod. Se l'impostazione di provisioning automatico dei nodi a livello di cluster è abilitata, questo deployment attiva la creazione automatica del pool di nodi. Quando crei questo esempio di deployment, GKE crea un pool di nodi che contiene una sezione TPU v4 con una topologia 2x2x2 e due macchine ct4p-hightpu-4t.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tpu-workload
  labels:
    app: tpu-workload
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-tpu
  template:
    metadata:
      labels:
        app: nginx-tpu
    spec:
      nodeSelector:
        cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
        cloud.google.com/gke-tpu-topology: 2x2x2
        cloud.google.com/reservation-name: my-reservation
      containers:
      - name: nginx
        image: nginx:1.14.2
        resources:
          requests:
            google.com/tpu: 4
          limits:
            google.com/tpu: 4
        ports:
        - containerPort: 80

In questo manifest, i seguenti campi definiscono la configurazione della TPU:

  • cloud.google.com/gke-tpu-accelerator: la versione e il tipo di TPU. Ad esempio, puoi utilizzare uno dei seguenti elementi:
    • TPU v4 con tpu-v4-podslice
    • TPU v5e con tpu-v5-lite-podslice.
    • TPU v5p con tpu-v5p-slice.
    • TPU Trillium (v6e) con tpu-v6e-slice.
  • cloud.google.com/gke-tpu-topology: il numero e la disposizione fisica dei chip TPU all'interno di una sezione TPU. Per saperne di più, vedi Scegliere una topologia.
  • limits.google.com/tpu: il numero di chip TPU sulla VM TPU. La maggior parte delle configurazioni ha un solo valore corretto. Per saperne di più, consulta Come funzionano le TPU in GKE.
  • cloud.google.com/reservation-name: il nome della prenotazione di capacità da utilizzare per ottenere le risorse TPU. Se omesso, il carico di lavoro non utilizza alcuna prenotazione.

La configurazione del pool di nodi creato automaticamente dipende dal tipo di TPU, dalla topologia TPU e dal numero di chip TPU selezionati. Per prevedere il tipo, le dimensioni e la configurazione del pool di nodi, procedi nel seguente modo:

  1. In Scegli una topologia, filtra la tabella per Standard per il tipo di TPU specificato, ad esempio TPU Trillium o TPU v5e.
  2. Utilizza i valori specificati per identificare la configurazione del pool di nodi, come segue:
    1. gke-tpu-topology: trova la riga nella tabella che ha lo stesso valore per Topologia.
    2. limits: nella tabella, dividi il valore di Numero di chip TPU per il valore di Numero di VM. Individua nella tabella la riga con lo stesso valore risultante del valore specificato.

Ad esempio, considera uno scenario in cui hai richiesto tpu-v6e-slice (TPU Trillium) con una topologia 2x4. In questo scenario, filtri la tabella in Scegli una topologia per TPU Trillium. Dopodiché, identifica la riga corrispondente alla configurazione specificata, come segue:

  • gke-tpu-topology: TPU Trillium ha le seguenti configurazioni per una topologia 2x4:
    • Un pool di nodi di sezioni TPU single-host con otto chip TPU in un'unica istanza ct6e-standard-8t.
    • Un pool di nodi di sezioni TPU multi-host con otto chip TPU distribuiti su due istanze ct6e-standard-4t.
  • limits: poiché TPU Trillium offre più opzioni per la topologia 2x4, il valore specificato nel campo limits dipende dal tipo di pool di nodi che vuoi, come segue:
    • Node pool di sezioni TPU single-host: specifica limits.google.com/tpu: 8 per ottenere un pool di nodi con otto chip TPU e una VM. Tutti gli otto chip sono collegati a questa VM.
    • Node pool di sezioni TPU multi-host: specifica limits.google.com/tpu: 4 per ottenere un pool di nodi con otto chip TPU e due VM. Ogni VM ha 4 chip.

Selezione delle VM spot

Puoi selezionare VM spot per i pool di nodi creati automaticamente in uno dei seguenti modi:

  • ComputeClasses: utilizza il campo spot in una regola di priorità.
  • Specifiche del pod: utilizza una tolleranza per l'etichetta del nodo cloud.google.com/gke-spot="true" con l'effetto NoSchedule. Aggiungi un selettore di nodi per le etichette dei nodi cloud.google.com/gke-spot=true o cloud.google.com/gke-provisioning=spot. In alternativa, puoi selezionare le VM prerilasciabili utilizzando l'etichetta del nodo cloud.google.com/gke-preemptible nella tolleranza e nel selettore di nodi. Tuttavia, consigliamo vivamente le VM spot.

Configurazione dello spazio di archiviazione temporanea

GKE utilizza una parte del disco di avvio del nodo per lo spazio di archiviazione effimero dei pod. Puoi personalizzare le dimensioni del disco di avvio utilizzato da GKE per i nodi creati automaticamente in uno dei seguenti modi:

  • ComputeClasses: utilizza i campi storage.bootDiskSize e storage.bootDiskType in una regola di priorità. Puoi configurare impostazioni del disco di avvio diverse per ComputeClass diverse.
  • Specifiche del pod: utilizza i campi diskSizeGb e diskType nel file di configurazione a livello di cluster. Non puoi controllare le dimensioni e il tipo del disco di avvio per i singoli pod utilizzando questo metodo.

Per saperne di più, vedi Dischi di avvio personalizzati. Se non modifichi esplicitamente le impostazioni del disco di avvio, il valore predefinito è un volume pd-balanced con una capacità di 100 GiB.

GKE crea un nuovo pool di nodi solo se lo spazio di archiviazione temporaneo allocabile di un nodo con un disco di avvio specificato è maggiore o uguale alla richiesta di spazio di archiviazione temporaneo di un pod in attesa. Se la richiesta di spazio di archiviazione temporaneo è superiore allo spazio di archiviazione temporaneo allocabile di un nodo, GKE non crea un nuovo pool di nodi e il pod rimane in stato in attesa. GKE non regola dinamicamente le dimensioni dei dischi di avvio in base alle richieste di archiviazione temporanea dei pod.

Separazione dei workload

Puoi richiedere che pod specifici vengano sempre eseguiti su nodi separati dagli altri pod nel cluster. GKE utilizza taint dei nodi per impedire l'esecuzione di altri carichi di lavoro su questi nodi. Puoi configurare la separazione dei carichi di lavoro nei pool di nodi creati automaticamente nei seguenti modi:

  • ComputeClasses: i nodi creati da GKE per una ComputeClass specifica possono eseguire solo pod che selezionano quella ComputeClass. Non è necessario modificare le specifiche dei pod. Puoi separare i pod all'interno di una ComputeClass utilizzando l'affinità e l'anti-affinità tra pod.
  • Specifiche pod: se abiliti il provisioning automatico dei nodi per il cluster, puoi configurare la separazione dei carichi di lavoro utilizzando i campi nella specifica pod. Durante la creazione automatica del pool di nodi, GKE potrebbe creare node pool con etichette e taint se vengono soddisfatte tutte le seguenti condizioni:
    • Il pod utilizza un selettore di nodi per richiedere una chiave e un valore di etichetta del nodo personalizzati. Non puoi utilizzare le etichette dei nodi di sistema per la separazione dei carichi di lavoro.
    • Il pod ha una tolleranza per la stessa chiave dell'etichetta del nodo.
    • L'effetto di tolleranza è NoSchedule, NoExecute o non è specificato.

Per saperne di più sulla configurazione di questi campi e sulle limitazioni, consulta Configurare la separazione dei workload in GKE.

Limitazioni

  • Tutte le limitazioni del gestore della scalabilità automatica del cluster si applicano anche alla creazione automatica dei pool di nodi.
  • I cluster con più di 200 node pool totali potrebbero avere una latenza maggiore durante la scalabilità automatica. Qualsiasi configurazione che attiva la creazione di un nuovo pool di nodi, ad esempio la separazione dei workload o l'utilizzo di più ComputeClass, aumenta questo numero. Per ulteriori informazioni sui limiti dei cluster, vedi Limiti e best practice in "Pianificazione di cluster di grandi dimensioni".
  • Eventuali limiti delle risorse impostati per il cluster quando abiliti il provisioning automatico dei nodi vengono applicati anche ai node pool che GKE crea per le ComputeClass.
  • Le seguenti impostazioni non sono supportate da ComputeClasses:
    • Upgrade di picco o upgrade blu/verde.
    • Integrità del nodo e avvio protetto.
  • Per abilitare la creazione automatica del pool di nodi per una ComputeClass nelle versioni di GKE precedenti alla 1.33.3-gke.1136000, devi anche abilitare il provisioning automatico dei nodi a livello di cluster. Questa limitazione non si applica a GKE versione 1.33.3-gke.1136000 e successive.

Configurazioni non supportate

GKE non crea nuovi node pool che utilizzano le seguenti configurazioni:

Il gestore della scalabilità automatica dei cluster può scalare i nodi nei pool di nodi esistenti che utilizzano queste configurazioni.

Passaggi successivi