Scalabilità automatica di un cluster

Questa pagina mostra come scalare automaticamente i cluster Standard Google Kubernetes Engine (GKE). Per scoprire come funziona il 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 node pool perché i node pool vengono sottoposti a provisioning automatico tramite il provisioning automatico dei nodi, e vengono scalati automaticamente per soddisfare i requisiti dei tuoi workload.

Utilizzo del gestore della scalabilità automatica dei cluster

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

Creazione di un cluster con scalabilità automatica

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

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 località.
  • MIN_NODES: il numero minimo di nodi da scalare automaticamente per il pool di nodi specificato per zona. Per specificare il numero minimo di nodi per l'intero pool di nodi nelle versioni GKE 1.24 e 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 nelle versioni GKE 1.24 e 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 località Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster a livello di zona.

Esempio: creazione di un cluster con la scalabilità automatica dei nodi abilitata e nodi minimi e massimi

Il seguente comando crea un cluster con 90 nodi o 30 nodi in ciascuna delle 3 zone presenti nella regione. La scalabilità automatica dei nodi è abilitata e ridimensiona il numero di nodi in base a l 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-central1

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

Il seguente comando crea un cluster con 30 nodi o 10 nodi in ciascuna delle 3 zone presenti nella regione. La scalabilità automatica dei nodi è abilitata e ridimensiona il numero di nodi in base a l 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 il pool di nodi predefinito ha la scalabilità automatica abilitata:

  1. Nella Google Cloud console, 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 la 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 la scalabilità automatica abilitata utilizzando la gcloud CLI o la Google Cloud console.

gcloud

Per aggiungere un pool di nodi con la 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 nodi.
  • MIN_NODES: il numero minimo di nodi da scalare automaticamente per il pool di nodi specificato per zona. Per specificare il numero minimo di nodi per l'intero pool di nodi nelle versioni GKE 1.24 e 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 nelle versioni GKE 1.24 e 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 località Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster a livello di zona.

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

Il seguente comando crea un pool di nodi con la scalabilità automatica dei nodi che scala il pool di nodi fino 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 la scalabilità automatica a un cluster esistente:

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

    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. Fai clic su Crea node pool gestito dall'utente.

  5. Configura il pool di nodi come preferisci.

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

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

  8. 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 la gcloud CLI o la Google Cloud console.

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 il pool di nodi specificato per zona. Per specificare il numero minimo di nodi per l'intero pool di nodi nelle versioni GKE 1.24 e 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 nelle versioni GKE 1.24 e 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 località Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster a livello di zona.

Console

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

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

    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. In Pool di nodi, fai clic sul nome del node pool che vuoi modificare, quindi fai clic su Modifica.

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

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

  7. Fai clic su Salva.

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

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

gcloud

Descrivi i node pool nel cluster:

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

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del nuovo pool di nodi che hai scelto.
  • 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 Google Cloud console.

    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 node pool 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 hai scelto.
  • CLUSTER_NAME: il nome del cluster.

Disabilitazione della scalabilità automatica per un pool di nodi esistente

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

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 località Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster a livello di zona.

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 Google Cloud console.

    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. In Pool di nodi, fai clic sul nome del node pool che vuoi modificare, quindi fai clic su Modifica.

  5. In Dimensioni, deseleziona la casella di controllo Abilita la 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 dei cluster ridimensiona automaticamente i node pool entro i limiti specificati dai valori di dimensione minima (--min-nodes) e dimensione massima (--max-nodes) o dalla dimensione totale minima (--total-min-nodes) e dalla dimensione totale massima (--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 con la scalabilità automatica abilitata:

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

Impedire la pianificazione dei pod su nodi selezionati

Puoi utilizzare le incompatibilità startup o status per impedire la pianificazione dei pod su nodi selezionati, a seconda del caso d'uso.

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

Incompatibilità di avvio

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

Il gestore della scalabilità automatica dei cluster considera i nodi con incompatibilità startup come non pronti, ma li prende in considerazione durante la logica di fare lo scale up, presupponendo che diventeranno pronti a breve.

Le incompatibilità di avvio sono definite come tutte le incompatibilità con il prefisso startup-taint.cluster-autoscaler.kubernetes.io/

Incompatibilità di stato

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 con incompatibilità status come pronti, ma li ignora durante la logica di fare lo scale up. Anche se il nodo con incompatibilità è pronto, non devono essere eseguiti pod. Se i pod richiedono più risorse, GKE esegue lo scale up del cluster e ignora i nodi con incompatibilità.

Le incompatibilità di stato sono definite come tutte le incompatibilità con il prefisso status-taint.cluster-autoscaler.kubernetes.io/

Ignora incompatibilità

Le incompatibilità di ignoranza sono definite come tutte le incompatibilità con il prefisso ignore-taint.cluster-autoscaler.kubernetes.io/

Risoluzione dei problemi

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

Passaggi successivi