Aggiornamento di un pool di nodi

Dopo aver creato un cluster, puoi modificarne i pool di nodi. È possibile aggiornare solo alcuni parametri di un pool di nodi, ad esempio dimensioni, chiave di crittografia e gruppi di sicurezza. Questo documento spiega come eseguire questi e altri aggiornamenti comuni a un pool di nodi.

Tuttavia, questo documento non fornisce un elenco esaustivo dei comandi di aggiornamento. Se devi aggiornare un parametro non descritto in questo documento, consulta gcloud container aws node-pools update e la documentazione di projects.locations.awsNodePools.patch.

Prima di iniziare

Per aggiornare un pool di nodi, devi disporre della seguente autorizzazione di Identity and Access Management: gkemulticloud.googleapis.com/awsNodePools.update.

Per istruzioni su come gestire le autorizzazioni, consulta Concedere ruoli IAM agli utenti.

Aggiornamento di un pool di nodi

Le sezioni seguenti spiegano come apportare vari aggiornamenti a un pool di nodi. Un pool di nodi è un gruppo di nodi all'interno di un cluster con la stessa configurazione. Tutti i nodi di un cluster devono appartenere a un pool di nodi.

Puoi aggiornare più parametri di un pool di nodi contemporaneamente, specificandoli tutti nello stesso comando. Tuttavia, per maggiore chiarezza, questo documento mostra come aggiornare un singolo parametro alla volta.

Modifica versione del pool di nodi

In GKE su AWS, cambiare la versione di un pool di nodi significa modificare la versione di GKE in esecuzione sui nodi in quel pool di nodi.

Per modificare la versione del pool di nodi, specifica la nuova versione utilizzando il flag node-version nel seguente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION

Sostituisci quanto segue:

Aggiorna tipo di istanza del pool di nodi

Il tipo di istanza del pool di nodi è il tipo di istanza AWS EC2 utilizzato per creare i nodi in un pool di nodi. Ad esempio, il tipo di istanza m5.xlarge ha 4 vCPU, 16 GB di memoria e 32 GB di spazio di archiviazione SSD.

Per modificare il tipo di istanza del pool di nodi, specifica il nuovo tipo di istanza utilizzando il flag instance-type nel seguente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --instance-type=INSTANCE_TYPE

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del tuo pool di nodi.
  • CLUSTER_NAME: il nome del tuo cluster.
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud che gestisce il cluster.
  • INSTANCE_TYPE: il nuovo tipo di istanza di macchina AWS per questo pool di nodi. Ad esempio, m5.xlarge.

Gli aggiornamenti al tipo di istanza del pool di nodi non devono modificare l'architettura della CPU sottostante dell'istanza EC2. Ad esempio, se il pool di nodi originale utilizza istanze con CPU x86, il tipo di istanza aggiornato deve continuare a utilizzare le CPU x86, anziché altre architetture.

Per un elenco completo delle istanze supportate e delle relative architetture sottostanti, consulta i tipi di istanze AWS supportati.

Ruota la chiave di crittografia di un pool di nodi

Per informazioni su come aggiornare le chiavi di crittografia KMS del pool di nodi, consulta Rotazione delle chiavi.

Sostituisci i gruppi di sicurezza del pool di nodi

Per aggiornare i gruppi di sicurezza collegati a un pool di nodi, esegui questo comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --security-group-ids=SECURITY_GROUP_IDS

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del pool di nodi da aggiornare.
  • CLUSTER_NAME: il nome del tuo cluster.
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud che gestisce il cluster.
  • SECURITY_GROUP_IDS: un elenco separato da virgole di gruppi di sicurezza da collegare al pool di nodi.

Per i cluster che eseguono GKE versione 1.25 o successive, l'aggiornamento può essere eseguito in modo dinamico senza riavviare i nodi. Questo è l'approccio consigliato per i cluster che utilizzano GKE 1.25 o versioni successive.

Per eseguire aggiornamenti dinamici, il ruolo di agente di servizio API deve avere le seguenti autorizzazioni AWS IAM:

  • ec2:ModifyInstanceAttribute
  • ec2:DescribeInstances

Queste autorizzazioni vengono assegnate automaticamente al ruolo Agente di servizio API se scegli il ruolo Agente di servizio API predefinito quando crei il cluster.

Per i cluster che eseguono versioni precedenti di GKE o per i cluster che eseguono versioni 1.25 o successive, ma l'agente di servizio API non dispone delle autorizzazioni per eseguire un aggiornamento dinamico, l'aggiornamento viene eseguito utilizzando un aggiornamento in sequenza. Gli aggiornamenti in sequenza sono più fastidiosi degli aggiornamenti dinamici perché questi, a differenza degli aggiornamenti dinamici, riavviano i nodi. Per ulteriori informazioni sugli aggiornamenti in sequenza, consulta Aggiornamenti di Surge.

Rimuovi i gruppi di sicurezza del pool di nodi

Puoi rimuovere tutti i gruppi di sicurezza non predefiniti collegati al tuo pool di nodi eseguendo questo comando. Per maggiori informazioni sui gruppi di sicurezza predefiniti, consulta Gruppi di sicurezza dei pool di nodi.

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=GOOGLE_CLOUD_LOCATION \
    --clear-security-group-ids

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del pool di nodi da aggiornare.
  • CLUSTER_NAME: il nome del tuo cluster.
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud che gestisce il cluster.

Ridimensiona un pool di nodi

Per modificare le dimensioni del pool di nodi (ovvero il numero di nodi nel pool di nodi), assegna nuovi valori ai flag min-nodes e max-nodes nel seguente comando:

gcloud container aws node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del pool di nodi da aggiornare.
  • CLUSTER_NAME: il nome del cluster a cui collegare il pool di nodi.
  • GOOGLE_CLOUD_LOCATION: la regione supportata di Google Cloud che gestisce il cluster. Ad esempio: us-west1.
  • MIN_NODES: il numero minimo di nodi che il pool di nodi può contenere. Il valore può essere 0 o superiore.
  • MAX_NODES: il numero massimo di nodi che può contenere il pool di nodi. Il valore deve essere almeno 1 e maggiore o uguale al valore di MIN_NODES.

Ulteriori dettagli sul ridimensionamento dei pool di nodi

Prima di ridimensionare un pool di nodi, è importante valutare le potenziali ripercussioni sui carichi di lavoro.

Ridimensionamento delle azioni e relative conseguenze

Quando ridimensioni i pool di nodi, vengono attivate azioni diverse in base alla nuova configurazione e allo stato attuale dei nodi. È essenziale comprendere queste azioni e le loro implicazioni:

  • Nessuna modifica: se il numero attuale dei nodi è già in linea con il nuovo intervallo specificato, GKE su AWS non apporta modifiche al numero di nodi.
  • Aumento del numero minimo: se il nuovo numero minimo di nodi è impostato su un numero superiore a quello esistente, GKE su AWS aggiunge nodi in modo incrementale fino al raggiungimento della dimensione minima appena definita.
  • Riduzione del numero massimo: se modifichi il numero massimo di nodi impostando un valore inferiore a quello esistente, GKE su AWS esegue le seguenti azioni:
    • Disabilita il gestore della scalabilità automatica dei cluster.
    • Imposta il gruppo di scalabilità automatica per il pool di nodi sulla dimensione minima specificata.
    • Seleziona i singoli nodi da rimuovere. Ogni nodo viene contrassegnato come non pianificabile, svuotato dalle attività dell'utente, quindi arrestato. Questa procedura continua fino al raggiungimento della dimensione massima specificata.
    • Modifica il gruppo di scalabilità automatica del pool di nodi in modo che corrisponda alla nuova dimensione massima.
    • Riabilita il gestore della scalabilità automatica dei cluster una volta raggiunta la dimensione massima.

Per ulteriori informazioni sul gestore della scalabilità automatica dei cluster, consulta Informazioni sul gestore della scalabilità automatica dei cluster.

Protezione dei carichi di lavoro durante il ridimensionamento

Per garantire la continua disponibilità dei carichi di lavoro durante il ridimensionamento del pool di nodi, GKE su AWS fornisce le seguenti misure di salvaguardia:

  • Durante lo svuotamento dei nodi, GKE su AWS rispetta la configurazione di PodDisruptionBudget per un massimo di un'ora. Dopo questo periodo, vengono eliminati i pod rimanenti sul nodo.

  • Quando i nodi sono impostati per essere riavviati o rimossi, GKE su AWS ne garantisce l'arresto controllato e attende fino a due ore. Se dopo questo periodo i pod rimangono sul nodo, l'istanza della macchina virtuale sottostante viene eliminata.

Controlla lo stato del pool di nodi

Per verificare che l'aggiornamento sia riuscito, puoi controllare lo stato del pool di nodi eseguendo questo comando:

gcloud container aws node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del tuo pool di nodi.
  • CLUSTER_NAME: il nome del tuo cluster.
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud che gestisce il cluster.

GKE su AWS tenta di eseguire gli aggiornamenti richiesti al pool di nodi, quindi esegue un controllo di integrità. Se uno o più passaggi dell'aggiornamento non vanno a buon fine, lo stato del pool di nodi è contrassegnato come DEGRADED.

Annullare un'operazione di aggiornamento

Prima di poter annullare un aggiornamento in corso del pool di nodi, devi determinare il nome dell'operazione in corso. Per elencare le operazioni in corso e i relativi nomi, esegui questo comando:

gcloud container aws operations list--filter="status=PENDING OR status=RUNNING"
    --location GOOGLE_CLOUD_LOCATION

Sostituisci GOOGLE_CLOUD_LOCATION con la regione Google Cloud supportata che gestisce il cluster. Ad esempio: us-west1.

Cerca il OPERATION_NAME dell'aggiornamento che vuoi annullare nell'output del comando. Per un elenco delle operazioni, consulta gcloud container aws Operations list.

Dopo aver identificato OPERATION_NAME, puoi annullare l'operazione con il seguente comando:

gcloud container aws operations cancel OPERATION_NAME
    --location GOOGLE_CLOUD_LOCATION

Sostituisci quanto segue:

Tieni presente che l'annullamento di un aggiornamento in corso del pool di nodi non annulla gli aggiornamenti dei nodi già completati. Di conseguenza, il pool di nodi può essere parzialmente aggiornato.