Scalabilità automatica di un cluster


Questa pagina mostra come scalare automaticamente i cluster Standard Google Kubernetes Engine (GKE). Per scoprire di più sul funzionamento del gestore della scalabilità automatica dei cluster, consulta Gestore della scalabilità automatica dei cluster.

Con i cluster Autopilot, non devi preoccuparti del provisioning dei nodi o della gestione dei pool di nodi perché i pool di nodi vengono sottoposti a provisioning automaticamente tramite il provisioning automatico dei nodi e vengono scalati automaticamente per soddisfare i requisiti dei tuoi carichi di lavoro.

Utilizzo del gestore della scalabilità automatica dei cluster

Le sezioni seguenti spiegano come utilizzare il gestore della scalabilità automatica del cluster.

Creazione di un cluster con scalabilità automatica

Puoi creare un cluster con la scalabilità automatica abilitata utilizzando Google Cloud CLI o la console Google Cloud .

gcloud

Per creare un cluster con la scalabilità automatica abilitata, utilizza il flag --enable-autoscaling e specifica --min-nodes e --max-nodes:

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster da creare.
  • NUM_NODES: il numero di nodi da creare in ogni posizione.
  • MIN_NODES: il numero minimo di nodi da scalare automaticamente per ilpool di nodil specificato per zona. Per specificare il numero minimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-min-nodes. I flag --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • MAX_NODES: il numero massimo di nodi da scalare automaticamente per il pool di nodi specificato per zona. Per specificare il numero massimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-max-nodes. I flag --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.

Esempio: creazione di un cluster con la scalabilità automatica dei nodi abilitata e il numero minimo e massimo di nodi

Il comando seguente crea un cluster con 90 nodi o 30 nodi in ciascuna delle tre zone presenti nella regione. La scalabilità automatica dei nodi è abilitata e ridimensiona il numero di nodi in base al carico del cluster. Il gestore della scalabilità automatica dei cluster può ridurre le dimensioni del pool di nodi predefinito a 15 nodi o aumentare il pool di nodi fino a un massimo di 50 nodi per zona.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes=30 \
    --min-nodes=15 --max-nodes=50 \
    --location=us-central

Esempio: creazione di un cluster con scalabilità automatica dei nodi abilitata e nodi totali

Il seguente comando crea un cluster con 30 nodi o 10 nodi in ciascuna delle tre zone presenti nella regione. La scalabilità automatica dei nodi è abilitata e ridimensiona il numero di nodi in base al carico del cluster. In questo esempio, la dimensione totale del cluster può essere compresa tra 10 e 60 nodi, indipendentemente dalla distribuzione tra le zone.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 10 \
    --location us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

Console

Per creare un nuovo cluster in cui è attivato lo scalabilità automatica del pool di nodi predefinito:

  1. Nella console Google Cloud , vai alla pagina Crea un cluster Kubernetes.

    Vai a Crea un cluster Kubernetes

  2. Configura il cluster come preferisci.

  3. Nel riquadro di navigazione, in Pool di nodi, fai clic su default-pool.

  4. Seleziona la casella di controllo Abilita scalabilità automatica.

  5. Modifica i valori dei campi Numero minimo di nodi e Numero massimo di nodi come preferisci.

  6. Fai clic su Crea.

Aggiunta di un pool di nodi con scalabilità automatica

Puoi creare un pool di nodi con scalabilità automatica abilitata utilizzando gcloud CLI o la console Google Cloud .

gcloud

Per aggiungere un pool di nodi con scalabilità automatica a un cluster esistente, utilizza il seguente comando:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di nodi desiderato.
  • CLUSTER_NAME: il nome del cluster in cui viene creato il pool di nodil.
  • MIN_NODES: il numero minimo di nodi da scalare automaticamente per ilpool di nodil specificato per zona. Per specificare il numero minimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-min-nodes. I flag --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • MAX_NODES: il numero massimo di nodi da scalare automaticamente per il pool di nodi specificato per zona. Per specificare il numero massimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-max-nodes. I flag --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.

Esempio: aggiunta di un pool di nodi con scalabilità automatica dei nodi abilitata

Il seguente comando crea un pool di nodi con la scalabilità automatica dei nodi che scala ilpool di nodil a un massimo di 5 nodi e un minimo di 1 nodo:

gcloud container node-pools create my-node-pool \
    --cluster my-cluster \
    --enable-autoscaling \
    --min-nodes 1 --max-nodes 5 \
    --location us-central1-c

Console

Per aggiungere un pool di nodi con scalabilità automatica a un cluster esistente:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic su Aggiungi pool di nodi.

  4. Configura il pool di nodi come preferisci.

  5. In Dimensioni, seleziona la casella di controllo Abilita scalabilità automatica.

  6. Modifica i valori dei campi Numero minimo di nodi e Numero massimo di nodi in base alle tue esigenze.

  7. Fai clic su Crea.

Abilitazione della scalabilità automatica per un pool di nodi esistente

Puoi abilitare la scalabilità automatica per un pool di nodi esistente utilizzando gcloud CLI o la console Google Cloud .

gcloud

Per abilitare la scalabilità automatica per un pool di nodi esistente, utilizza il seguente comando:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool=POOL_NAME \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --location=CONTROL_PLANE_LOCATION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster da aggiornare.
  • POOL_NAME: il nome del pool di nodi desiderato. Se hai un solo pool di nodi, fornisci default-pool come valore.
  • MIN_NODES: il numero minimo di nodi da scalare automaticamente per ilpool di nodil specificato per zona. Per specificare il numero minimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-min-nodes. I flag --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • MAX_NODES: il numero massimo di nodi da scalare automaticamente per il pool di nodi specificato per zona. Per specificare il numero massimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-max-nodes. I flag --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • CONTROL_PLANE_LOCATION: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.

Console

Per abilitare la scalabilità automatica per un pool di nodi esistente:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic sulla scheda Nodi.

  4. Nella sezione Pool di nodi, fai clic sul nome del pool di nodi che vuoi modificare, poi fai clic su Modifica.

  5. In Dimensioni, seleziona la casella di controllo Abilita scalabilità automatica.

  6. Modifica i valori dei campi Numero minimo di nodi e Numero massimo di nodi in base alle tue esigenze.

  7. Fai clic su Salva.

Verifica che la scalabilità automatica per il pool di nodi esistente sia abilitata

Verifica che il cluster utilizzi la scalabilità automatica con Google Cloud CLI o la console Google Cloud .

gcloud

Descrivi i pool di nodi nel cluster:

gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1

Sostituisci quanto segue:

  • POOL_NAME: il nome del nuovo pool di nodi che scegli.
  • CLUSTER_NAME: il nome del cluster.

Se la scalabilità automatica è abilitata, l'output è simile al seguente:

autoscaling:
  enabled: true

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da verificare.

  3. Fai clic sulla scheda Nodi.

  4. In Pool di nodi, verifica lo stato del pool di nodi Autoscalling.

Creazione di un pool di nodi che dà la priorità all'ottimizzazione delle prenotazioni inutilizzate

Puoi utilizzare il flag --location_policy=ANY quando crei un pool di nodi per indicare al gestore della scalabilità automatica dei cluster di dare la priorità all'utilizzo delle prenotazioni inutilizzate:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location_policy=ANY

Sostituisci quanto segue:

  • POOL_NAME: il nome del nuovo pool di nodi che scegli.
  • CLUSTER_NAME: il nome del cluster.

Disabilitazione della scalabilità automatica per un pool di nodi esistente

Puoi disattivare la scalabilità automatica per un pool di nodi esistente utilizzando gcloud CLI o la console Google Cloud .

gcloud

Per disabilitare la scalabilità automatica per un pool di nodi specifico, utilizza il flag --no-enable-autoscaling:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool=POOL_NAME \
    --location=CONTROL_PLANE_LOCATION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster da aggiornare.
  • POOL_NAME: il nome del pool di nodi desiderato.
  • CONTROL_PLANE_LOCATION: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.

Le dimensioni del cluster sono fisse alle dimensioni attuali del pool di nodi predefinito del cluster, che possono essere aggiornate manualmente.

Console

Per disabilitare la scalabilità automatica per un pool di nodi specifico:

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Fai clic sulla scheda Nodi.

  4. Nella sezione Pool di nodi, fai clic sul nome del pool di nodi che vuoi modificare, poi fai clic su Modifica.

  5. In Dimensioni, deseleziona la casella di controllo Abilita scalabilità automatica.

  6. Fai clic su Salva.

Ridimensionamento di un pool di nodi

Per i cluster con la scalabilità automatica abilitata, il gestore della scalabilità automatica del cluster ridimensiona automaticamente i node pool entro i limiti specificati dai valori di dimensione minima (--min-nodes) e dimensione massima (--max-nodes) o dalle dimensioni totali minime (--total-min-nodes) e massime (--total-max-nodes). Questi flag si escludono a vicenda. Non puoi ridimensionare manualmente un pool di nodi modificando questi valori.

Se vuoi ridimensionare manualmente un pool di nodi nel cluster in cui è abilitata la scalabilità automatica, esegui le seguenti operazioni:

  1. Disabilita la scalabilità automatica nel node pool.
  2. Ridimensiona manualmente il cluster.
  3. Riattiva la scalabilità automatica e specifica le dimensioni minime e massime del node pool.

Impedire la pianificazione dei pod sui nodi selezionati

A seconda del caso d'uso, puoi utilizzare le incompatibilità startup o status per impedire la pianificazione dei pod sui nodi selezionati.

Questa funzionalità è disponibile in GKE nella versione 1.28 e successive.

Incompatibilità di avvio

Utilizza le incompatibilità startup quando è presente un'operazione che deve essere completata prima che i pod possano essere eseguiti sul nodo. Ad esempio, i pod non devono essere eseguiti finché l'installazione dei driver sul nodo non è terminata.

Il gestore della scalabilità automatica del cluster considera i nodi contaminati con contaminazioni startup come non pronti, ma li prende in considerazione durante la logica di scale up, supponendo che saranno pronti a breve.

I taint di avvio sono definiti come tutti i taint con il prefisso startup-taint.cluster-autoscaler.kubernetes.io/

Status taints

Utilizza le incompatibilità status quando GKE non deve utilizzare un determinato nodo per eseguire i pod.

Il gestore della scalabilità automatica dei cluster considera i nodi contaminati con contaminazioni status come pronti, ma li ignora durante la logica di scale up. Anche se il nodo contaminato è pronto, non devono essere eseguiti pod. Se i pod hanno bisogno di più risorse, GKE esegue lo scale up del cluster e ignora i nodi contaminati.

I taint di stato sono definiti come tutti i taint con il prefisso status-taint.cluster-autoscaler.kubernetes.io/

Ignora incompatibilità

I taint ignorati sono definiti come tutti i taint con il prefisso ignore-taint.cluster-autoscaler.kubernetes.io/

Risoluzione dei problemi

Per suggerimenti sulla risoluzione dei problemi, consulta le seguenti pagine:

Passaggi successivi