Aggiornamento di un pool di nodi

Questo argomento spiega come aggiornare i pool di nodi. Puoi aggiornare i pool di nodi per i seguenti motivi:

  • Per eseguire l'upgrade della versione del pool di nodi
  • Per modificare il numero di nodi nel pool di nodi
  • Per modificare le annotazioni del pool di nodi (aggiornabili solo tramite API)

Puoi anche modificare altri parametri dei node pool non elencati sopra. Per un elenco completo dei parametri che puoi aggiornare, consulta la documentazione di gcloud container azure node-pools update e projects.locations.azureNodePools.patch.

Aggiornamento processo

Questa sezione descrive le procedure seguite da GKE on Azure per aggiornare un pool di nodi. La procedura è diversa a seconda dell'entità delle modifiche necessarie al pool di nodi.

Aggiornamento solo della configurazione

Se GKE su Azure può aggiornare un pool di nodi senza riavviare o rielaborare le risorse, apporterà le modifiche. Ad esempio, l'aggiornamento delle annotazioni del pool di nodi non riavvierà alcuna istanza.

Aggiornamento in sequenza

Quando una modifica a un pool di nodi richiede il riavvio delle macchine virtuali esistenti, ad esempio quando si aggiorna la versione di Kubernetes, GKE su Azure esegue i seguenti passaggi:

  1. Modifica il set di scalabilità delle macchine virtuali del pool di nodi con la nuova configurazione.
  2. Scegli l'istanza sottostante di un nodo da aggiornare.
  3. GKE su Azure esegue il cordoning e svuota il nodo. A questo punto, non è possibile pianificare nuovi pod sul nodo di destinazione. Gli oggetti pod esistenti sul nodo di destinazione vengono riprogrammati su altri nodi. I pod che non possono essere riprogrammati su nessun altro nodo esistente rimangono nella fase in attesa fino a quando non possono essere pianificati.
  4. Aggiorna l'istanza in modo che acquisisca la configurazione più recente dal set di scalabilità delle macchine virtuali.
  5. Esegui nuovamente l'immagine e riavvia l'istanza.
  6. Attendi che tutti i nodi di questo pool di nodi siano integri.
  7. Se tutti i nodi in questo pool di nodi sono integri, seleziona un altro nodo finché non vengono aggiornati tutti. Se un nodo non è in stato di esecuzione, GKE on Azure imposta il pool di nodi sullo stato DEGRADED. Per ulteriori informazioni, consulta Aggiornamenti non riusciti.

Proteggere i carichi di lavoro durante un aggiornamento in sequenza del pool di nodi

Durante l'aggiornamento progressivo del pool di nodi, GKE su Azure rispetta la configurazione di PodDisruptionBudget
per un massimo di un'ora dopo l'inizio dello svuotamento di un nodo. Dopo un'ora, GKE su Azure elimina tutti i pod rimanenti sul nodo.

Durante l'aggiornamento in sequenza, GKE su Azure esegue l'arresto di tutti i node da riavviare o rimuovere con il massimo impegno per un massimo di due ore. Dopo due ore, se sul nodo sono presenti oggetti pod rimanenti, GKE su Azure elimina il nodo e esegue nuovamente l'imaging dell'istanza della macchina virtuale sottostante.

Ridimensionamento dei node pool

La scalabilità automatica dei cluster è abilitata per impostazione predefinita nei node pool GKE su Azure. Il gestore della scalabilità automatica del cluster ridimensiona automaticamente il pool di nodi in base alle esigenze dei tuoi carichi di lavoro. Per ulteriori informazioni sul gestore della scalabilità automatica dei cluster, consulta Gestore della scalabilità automatica dei cluster.

Quando modifichi il numero massimo e minimo di nodi nel pool di nodi, GKE su Azure esegue azioni diverse a seconda della nuova configurazione e del numero corrente di nodi del node pool di nodi. Queste azioni includono:

  • Se il numero attuale di nodi del pool è già compreso nel nuovo intervallo, GKE su Azure non modifica il numero di nodi nel pool.

  • Se il nuovo numero minimo di nodi è superiore al numero di nodi corrente del pool di nodi, GKE su Azure aggiunge altri nodi fino a quando il pool di nodi non raggiunge la nuova dimensione minima.

  • Se il nuovo numero massimo di nodi è inferiore al numero di nodi corrente del pool, GKE on Azure riduce le dimensioni del pool di nodi eseguendo le seguenti azioni:

    1. Aggiorna la configurazione della scalabilità automatica nel set di scalabilità delle macchine virtuali nel pool di nodi
    2. Seleziona un nodo da rimuovere
    3. Isola e svuota il nodo
    4. Elimina l'istanza della macchina virtuale sottostante
    5. Attendi che la macchina virtuale eliminata venga rimossa completamente
    6. Esegui il controllo di integrità sull'intero pool di nodi
    7. Ripeti fino a quando il numero di nodi non raggiunge il numero desiderato

In che modo GKE su Azure protegge i carichi di lavoro durante il ridimensionamento del pool di nodi

Durante il ridimensionamento del pool di nodi, GKE su Azure rispetta la configurazione di PodDisruptionBudget per un massimo di un'ora dopo l'inizio dello svuotamento di un nodo. Dopo un'ora, GKE su Azure elimina gli oggetti pod rimanenti sul nodo.

Durante il ridimensionamento del pool di nodi, GKE su Azure esegue un arresto graduale di tutti i nodi da riavviare o rimuovere e attende fino a due ore. Dopo due ore, se sono presenti oggetti Pod rimanenti sul nodo, GKE su Azure elimina l'istanza della macchina virtuale sottostante.

Verificare lo stato di aggiornamento non riuscito

Se GKE su Azure esegue un controllo di integrità dopo un aggiornamento e il controllo non va a buon fine, il pool di nodi viene contrassegnato come DEGRADED. Puoi trovare informazioni sullo stato del tuo cluster con il seguente comando Google Cloud CLI:

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

Sostituisci quanto segue:

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

L'output include informazioni sullo stato e sulla configurazione del pool di nodi.

Prerequisiti

Per aggiornare un pool di nodi, devi disporre dell'autorizzazione gkemulticloud.googleapis.com/azureNodePools.update Identity and Access Management.

Aggiornamento di un pool di nodi

Puoi aggiornare un pool di nodi con Google Cloud CLI. Per aggiornare un pool di nodi, esegui:

gcloud container azure node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION \
    --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 Google Cloud supportata che gestisce il tuo cluster, ad esempio us-west1
  • NODE_POOL_VERSION: la nuova versione del pool di nodi supportata
  • MIN_NODES: il nuovo numero minimo di nodi che il pool di nodi può contenere. Deve essere pari o superiore a 0.
  • MAX_NODES: il nuovo numero massimo di nodi che il pool di nodi può contenere. Deve essere almeno 1 e il valore di MIN_NODES.

Annullamento di un'operazione di aggiornamento

Per annullare un'operazione di aggiornamento del pool di nodi in corso, esegui il comando seguente:

gcloud container azure operations cancel OPERATION_NAME

Sostituisci OPERATION_NAME con il nome dell'operazione di aggiornamento.

Tieni presente che l'annullamento di un'operazione di aggiornamento del pool di nodi in corso non consente di annullare gli aggiornamenti dei nodi già completati. Ciò può comportare un pool di nodi parzialmente aggiornato.

Passaggi successivi