Scalabilità automatica di un cluster


Questa pagina mostra come eseguire il ridimensionamento automatico dei cluster Google Kubernetes Engine (GKE) standard. 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 di eseguire il provisioning dei nodi o di gestire i pool di nodi, perché i pool di nodi vengono provisionati automaticamente tramite il provisioning automatico dei nodi e 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 dei cluster.

Creazione di un cluster con la scalabilità automatica

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

gcloud

Per creare un cluster con scalabilità automatica abilitata, utilizza --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 \
    --region=COMPUTE_REGION

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 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. Le bandiere --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 la scalabilità automatica 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.
  • COMPUTE_REGION: la regione Compute Engine per il nuovo cluster. Per i cluster di zona, utilizza --zone=COMPUTE_ZONE.

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

Il comando seguente crea un cluster con 90 nodi o 30 nodi in per ognuna 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 aumenta 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 \
    --region=us-central

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

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 \
    --region us-central1 \
    --total-min-nodes 10  --total-max-nodes 60

Console

Per creare un nuovo cluster in cui il pool di nodi predefinito dispone di scalabilità automatica attivato:

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

    Vai a Google Kubernetes Engine

  2. Fai clic su Crea.

  3. Configura il cluster come preferisci.

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

  5. Seleziona la casella di controllo Attiva la scalabilità automatica.

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

  7. Fai clic su Crea.

Aggiunta di un pool di nodi con scalabilità automatica

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

gcloud

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

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

Sostituisci quanto segue:

  • POOL_NAME: il nome del pool di nodi desiderato.
  • CLUSTER_NAME: il nome del cluster in cui viene creato un pool di nodi.
  • MIN_NODES: il numero minimo di nodi da la scalabilità automatica 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. Le bandiere --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • COMPUTE_REGION: il Regione di Compute Engine per il nuovo cluster. Per i cluster di zona, usa --zone=COMPUTE_ZONE.

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

Il comando seguente crea un pool di nodi con scalabilità automatica dei nodi scalabile del pool di nodi 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 \
    --zone 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 l'interfaccia a riga di comando gcloud o la console Google Cloud.

gcloud

Per abilitare la scalabilità automatica per un pool di nodi esistente, utilizza quanto segue :

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

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, specifica default-pool come valore.
  • MIN_NODES: il numero minimo di nodi da scalare automaticamente per il pool di nodi specificato per zona. Per specificare 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 la scalabilità automatica per il pool di nodi specificato per zona. Per specificare numero massimo di nodi per l'intero pool di nodi in GKE 1.24 e versioni successive, utilizza --total-max-nodes. Le bandiere --total-min-nodes e --total-max-nodes si escludono a vicenda con i flag --min-nodes e --max-nodes.
  • COMPUTE_REGION: la regione Compute Engine per il nuovo cluster. Per i cluster di zona, usa --zone=COMPUTE_ZONE.

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

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

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

  7. Fai clic su Salva.

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

Verifica che il cluster utilizzi l'autoscaling con la CLI Google Cloud 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 hai scegliere.
  • 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 del 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 scegliere.
  • CLUSTER_NAME: il nome del cluster.

Disattivazione della scalabilità automatica per un pool di nodi esistente

Puoi disabilitare la scalabilità automatica per un pool di nodi esistente utilizzando con 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 \
    --region=COMPUTE_REGION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster da aggiornare.
  • POOL_NAME: il nome del pool di nodi desiderato.
  • COMPUTE_REGION: la regione Compute Engine per il nuovo cluster. Per i cluster di zona, usa --zone=COMPUTE_ZONE.

Le dimensioni del cluster sono fisse in base alle dimensioni attuali predefinite del pool di nodi, che possono essere aggiornati manualmente.

Console

Per disattivare 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. In Pool di nodi, fai clic sul nome del pool di nodi che vuoi modificare, quindi 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 scalabilità automatica abilitata, il gestore della scalabilità automatica dei cluster ridimensiona i pool di nodi entro i limiti specificati dalla dimensione minima (--min-nodes) e dimensioni massime (--max-nodes) o il totale minimo dimensioni (--total-min-nodes) e dimensioni totali massime (--total-max-nodes). Questi si escludono a vicenda. Non puoi ridimensionare manualmente un pool di nodi modificando questi valori.

Se vuoi ridimensionare manualmente un pool di nodi nel tuo cluster con scalabilità automatica attiva, esegui queste operazioni:

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

Impedire la pianificazione dei pod su nodi selezionati

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

Questa funzionalità è disponibile in GKE 1.28 e versioni successive.

Incompatibilità di avvio

Utilizza le incompatibilità startup quando è presente un'operazione che deve essere completata prima che qualsiasi pod possa essere eseguito sul nodo. Ad esempio, i pod non devono essere eseguiti fino al termine dell'installazione dei driver sul nodo.

Il gestore della scalabilità automatica dei cluster considera i nodi con incompatibilità startup come non pronti, ma vengono presi 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/

Incompatibilità dello stato

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

Il gestore della scalabilità automatica dei cluster tratta i nodi con impurità status come pronti, ma li ignora durante la logica di scalabilità automatica. Anche se il nodo incompatibile è pronto, non deve essere eseguito alcun pod. Se i pod richiedono più risorse, GKE esegue lo scale up del cluster e ignora i nodi compromessi.

Le alterazioni dello stato sono definite come tutte le alterazioni con il prefisso status-taint.cluster-autoscaler.kubernetes.io/

Ignora incompatibilità

Le contaminazioni da ignorare sono definite come tutte le contaminazioni con il prefisso ignore-taint.cluster-autoscaler.kubernetes.io/

Risoluzione dei problemi

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

Passaggi successivi