Per impostazione predefinita, gli upgrade automatici sono abilitati per i cluster Google Kubernetes Engine (GKE) e per i pool di nodi GKE Standard.
Questa pagina spiega come richiedere manualmente un upgrade o un downgrade per il piano di controllo o i nodi di un cluster GKE. Puoi eseguire manualmente l'upgrade della versione come segue:
- Autopilot: esegui l'upgrade della versione del piano di controllo.
- Standard: esegui l'upgrade della versione del piano di controllo e la versione del pool di nodi.
Per eseguire l'upgrade di un GKE aggiorna la versione del piano di controllo e dei nodi. in esecuzione. Viene eseguito l'upgrade dei cluster a una versione secondaria più recente (ad es. da 1.24 a 1.25) o a una versione patch più recente (ad es. da 1.24.2-gke.100 a 1.24.5-gke.200). Per ulteriori informazioni, consulta Controllo delle versioni e assistenza di GKE.
Puoi scoprire di più su come funzionano gli upgrade automatici e manuali dei cluster. Puoi anche stabilire quando gli upgrade automatici possono o non possono essere eseguiti configurando periodi di manutenzione ed esclusioni.
Le nuove versioni di GKE vengono annunciate regolarmente e puoi ricevere una notifica sulle nuove versioni a cui è possibile eseguire l'upgrade di un cluster specifico con le notifiche del cluster.
Per informazioni sulle versioni disponibili, consulta Controllo delle versioni. Per scoprire di più su vedi Architettura dei cluster. Per indicazioni sull'upgrade dei cluster, consulta Best practice per l'upgrade dei cluster.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
Salvare i dati su dischi permanenti
Prima di eseguire l'upgrade di un pool di nodi, devi assicurarti che tutti i dati che vuoi conservare siano archiviati in un pod mediante volumi permanenti che impiegano dischi permanenti. I dischi permanenti vengono smontati, anziché cancellati, durante gli upgrade e i relativi dati vengono "trasferiti" tra i pod.
Le seguenti limitazioni riguardano i dischi permanenti:
- I nodi su cui sono in esecuzione i pod devono essere VM di Compute Engine
- Queste VM devono trovarsi nello stesso progetto e nella stessa zona di Compute Engine del disco persistente
Per scoprire come aggiungere un disco permanente a un'istanza di nodo esistente, consulta Aggiunta o ridimensionamento di dischi permanenti a livello di zona nella documentazione di Compute Engine.
Informazioni sull'upgrade
L'upgrade del piano di controllo e dei nodi di un cluster viene eseguito separatamente.
L'upgrade dei piani di controllo dei cluster viene sempre eseguito regolarmente, indipendentemente dal fatto che il cluster sia registrato o meno rilasciare il canale o meno.
Per ricevere notifiche di upgrade in modo proattivo, consulta l'articolo Ricevere notifiche relative ai cluster.
Limitazioni
I cluster alpha non possono essere con upgrade eseguito.
Versioni supportate
Le note di rilascio annunciano quando nuovi diventano disponibili e quando le versioni precedenti non sono più disponibili. Alle ore in qualsiasi momento, puoi elencare tutte le versioni di cluster e nodi supportate utilizzando :
gcloud container get-server-config
Se il tuo cluster è registrato in un canale di rilascio, puoi eseguire l'upgrade a una versione con patch in un altro canale di rilascio con la stessa versione secondaria del tuo control plane. Ad esempio, puoi eseguire l'upgrade del cluster dalla versione 1.21.12-gke.1700 nel canale normale alla versione 1.21.13-gke.900 nel canale rapido. Per ulteriori informazioni, consulta Esecuzione delle versioni delle patch da un canale più recente. Tutti i cluster Autopilot sono registrati in un canale di rilascio.
Limitazioni del downgrade
In alcuni scenari, puoi eseguire il downgrade della versione del cluster a una precedente.
Per mitigare un upgrade non riuscito del piano di controllo del cluster, puoi Eseguire il downgrade del piano di controllo a una release patch precedente se la versione è una release patch precedente all'interno della stessa versione secondaria. Ad esempio, se il piano di controllo del tuo cluster esegue GKE 1.25.3-gke.400, puoi eseguire il downgrade del piano di controllo a 1.25.2-gke.100, se è ancora disponibile.
Non puoi eseguire il downgrade di un piano di controllo del cluster Kubernetes a un piano di controllo minore precedente completamente gestita. Ad esempio, se il tuo piano di controllo esegue GKE nella versione 1.25, non puoi eseguire il downgrade alla versione 1.24. Se tenti di farlo, appare il seguente messaggio di errore:
ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.24.3-gke.100": specified version is not
newer than the current version.
Non puoi eseguire il downgrade della versione secondaria del piano di controllo di un cluster, consigliamo di testare e qualificare gli upgrade della versione secondaria con i cluster in un ambiente di test, quando una nuova versione secondaria diventa disponibile, ma prima che la versione diventi predefinita. Questa opzione è consigliata soprattutto se il cluster potrebbe essere interessato da Modifiche nella versione secondaria successiva, ad esempio API o funzionalità ritirate che viene rimosso.
Per ridurre l'esito di un upgrade del pool di nodi non riuscito, puoi eseguire il downgrade di un pool di nodi in di una patch di rilascio precedente o di una versione secondaria. Assicurati di non eseguire il downgrade dei nodi a una versione che è più di due versioni secondarie precedenti alla versione del piano di controllo del cluster.
Upgrade del cluster
Google esegue l'upgrade automatico di cluster e nodi. Per un maggiore controllo sugli aggiornamenti automatici ricevuti dal cluster e dai relativi nodi, puoi registrarli in un canale di rilascio. Tutti i cluster Autopilot vengono registrati automaticamente in un canale di rilascio.
Per saperne di più sulla gestione della versione GKE del cluster, consulta Upgrade.
Puoi avviare un upgrade manuale in qualsiasi momento dopo una nuova versione del deployment.
Upgrade manuale del piano di controllo
Quando avvii un upgrade del cluster, non puoi modificare la configurazione del cluster per diversi minuti, finché il control plane non è nuovamente accessibile. Se devi evitare i tempi di riposo durante gli upgrade del piano di controllo, valuta la possibilità di utilizzare un cluster Autopilot o un cluster Standard a livello di area geografica. Questa operazione non influisce sulla disponibilità dei nodi worker su cui vengono eseguiti i carichi di lavoro, in quanto rimangono disponibili durante gli upgrade del piano di controllo.
Puoi eseguire manualmente l'upgrade del piano di controllo Autopilot o Standard utilizzando la console Google Cloud o Google Cloud CLI.
gcloud
Per vedere le versioni disponibili per il piano di controllo del tuo cluster, esegui seguente comando:
gcloud container get-server-config
Per eseguire l'upgrade alla versione predefinita del cluster, esegui il seguente comando:
gcloud container clusters upgrade CLUSTER_NAME --master
Per eseguire l'upgrade a una versione specifica non predefinita, specifica la
--cluster-version
come nel seguente comando:
gcloud container clusters upgrade CLUSTER_NAME --master \
--cluster-version VERSION
Sostituisci VERSION
con la versione che vuoi
eseguire l'upgrade del tuo cluster. Puoi utilizzare una versione specifica, ad esempio 1.18.17-gke.100
, oppure un alias di versione, ad esempio latest
. Per ulteriori informazioni, consulta Specifica della versione del cluster.
Console
Per aggiornare manualmente il piano di controllo del cluster, segui questi passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic sul nome del cluster che ti interessa.
In Impostazioni di base del cluster, fai clic su edit Upgrade disponibile accanto a Versione.
Seleziona la versione che ti interessa e fai clic su Salva modifiche.
Dopo aver eseguito l'upgrade di un control plane standard, puoi eseguire l'upgrade dei relativi nodi. Per impostazione predefinita, i nodi standard creati utilizzando la console Google Cloud hanno l'upgrade automatico abilitato, quindi questo avviene automaticamente. Autopilot esegue sempre l'upgrade dei nodi automaticamente.
Downgrade dei cluster
- Impostare un'esclusione per la manutenzione prima di eseguire il downgrade per impedire l'upgrade automatico di GKE per il piano di controllo dopo il downgrade.
Esegui il downgrade del control plane del cluster a una versione patch precedente:
gcloud container clusters upgrade CLUSTER_NAME \ --master --cluster-version VERSION
Disattivazione degli upgrade automatici dei cluster
La sicurezza dell'infrastruttura è una priorità elevata per GKE e, di conseguenza, viene eseguito l'upgrade dei piani di controllo regolarmente e non possono essere disattivati. Tuttavia, puoi applicare periodi di manutenzione ed esclusioni sospendere temporaneamente gli upgrade per piani di controllo e nodi.
Sebbene non sia consigliato, puoi disattivare l'upgrade automatico dei nodi.
Eseguire l'upgrade dei pool di nodi
Per impostazione predefinita, i nodi di un cluster upgrade automatico è attivata ed è consigliabile non disattivare . Nodo gli upgrade automatici assicurano che il piano di controllo e la versione dei nodi del tuo cluster restino sincronizzato e conforme al disallineamento delle versioni di Kubernetes , che garantisce che sono compatibili con nodi fino a due versioni secondarie precedenti al dal piano di controllo. Ad esempio, i piani di controllo Kubernetes 1.29 sono compatibili di Kubernetes 1.27.
Con gli upgrade del pool di nodi GKE, puoi scegliere tra due strategie di upgrade configurabili, ovvero upgrade intensivo e upgrade blu/verde.
Scegli una strategia e utilizza i parametri per ottimizzarla in base alle esigenze del tuo ambiente cluster.
Durante l'upgrade di un nodo, GKE smette di pianificare nuovi pod e tenta di pianificare i pod in esecuzione su altri nodi. Questo è in modo simile ad altri eventi che ricreano il nodo, come l'abilitazione o la disabilitazione di un sul pool di nodi.
L'upgrade è completo solo quando tutti i nodi sono stati ricreati e il cluster è nello stato desiderato. Quando un nodo con upgrade appena eseguito si registra con il piano di controllo, GKE contrassegna il nodo come pianificabile.
Le nuove istanze di nodi eseguono la versione di Kubernetes desiderata, nonché:
Upgrade manuale di un pool di nodi
Puoi eseguire manualmente l'upgrade di una versione del pool di nodi in modo che corrisponda alla versione del piano di controllo o a una versione precedente ancora disponibile e compatibile con il piano di controllo. Puoi eseguire manualmente l'upgrade di più pool di nodi in parallelo, mentre GKE esegue automaticamente l'upgrade di un solo pool di nodi alla volta.
Quando esegui l'upgrade manuale di un pool di nodi, GKE rimuove le etichette aggiunte ai singoli nodi utilizzando kubectl
.
Per evitare che questo accada, applica etichette ai pool di nodi
.
Puoi eseguire manualmente l'upgrade dei pool di nodi a una versione compatibile con il piano di controllo utilizzando la console Google Cloud o Google Cloud CLI.
gcloud
Nei comandi di questa sezione vengono utilizzate le seguenti variabili:
CLUSTER_NAME
: il nome del cluster del nodo di cui eseguire l'upgrade.NODE_POOL_NAME
: il nome del pool di nodi da utilizzare con upgrade eseguito.VERSION
: la versione Kubernetes a cui viene eseguito l'upgrade dei nodi. Ad esempio,--cluster-version=1.7.2
ocluster-version=latest
.
Esegui l'upgrade di un pool di nodi:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME
Per specificare una versione diversa di GKE sui nodi, utilizza il
flag facoltativo --cluster-version
:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--cluster-version VERSION
Per ulteriori informazioni su come specificare le versioni, consulta la sezione Controllo delle versioni.
Per saperne di più, consulta la documentazione di gcloud container clusters upgrade
.
Console
Per eseguire l'upgrade di un pool di nodi utilizzando la console Google Cloud, svolgi i seguenti passaggi:
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Accanto al cluster che vuoi modificare, fai clic su more_vert Azioni e poi su edit Modifica.
Nella pagina Dettagli cluster, fai clic sulla scheda Nodi.
Nella sezione Pool di nodi, fai clic sul nome del pool di nodi vuoi eseguire l'upgrade.
Fai clic su edit Modifica.
Fai clic su Cambia in Versione nodo.
Seleziona la versione desiderata dall'elenco a discesa Versione nodo, quindi Fai clic su Cambia.
Downgrade dei pool di nodi in corso
Puoi eseguire il downgrade di un pool di nodi, ad esempio, per mitigare upgrade del pool di nodi non riuscito. Esamina le limitazioni prima di eseguire il downgrade di un pool di nodi.
- Imposta un'esclusione per la manutenzione per il cluster per impedire che il pool di nodi venga sottoposto ad upgrade automatico da GKE dopo il downgrade.
- Per eseguire il downgrade di un pool di nodi, specifica una versione precedente seguendo le le istruzioni per eseguire l'upgrade manuale di un pool di nodi.
Modifica dei parametri di upgrade di sovraccarico
Per saperne di più su come modificare i parametri di upgrade di sovraccarico, consulta Configurare gli upgrade di sovraccarico.
Controllo dello stato di upgrade del pool di nodi in corso...
Puoi controllare lo stato di un upgrade utilizzando gcloud container operations
.
Visualizza un elenco di tutte le operazioni in esecuzione e completate nel cluster:
gcloud container operations list
A ogni operazione sono assegnati un ID operazione, un tipo di operazione e le ore di inizio e di fine, il cluster di destinazione e lo stato. L'elenco appare simile a nell'esempio seguente:
NAME TYPE ZONE TARGET STATUS_MESSAGE STATUS START_TIME END_TIME
operation-1505407677851-8039e369 CREATE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT16:47:57.851933021Z 20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4 UPGRADE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:40:05.136739989Z 20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989 DELETE_CLUSTER us-west1-a my-cluster DONE 20xx-xx-xxT18:41:53.918825764Z 20xx-xx-xxT18:43:48.639506814Z
Per visualizzare ulteriori informazioni su un'operazione specifica, specifica l'ID operazione come mostrato nel seguente comando:
gcloud container operations describe OPERATION_ID
Ad esempio:
gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a
Controllo delle impostazioni di upgrade del pool di nodi in corso...
Puoi vedere i dettagli sulla strategia di upgrade dei nodi utilizzata per i tuoi pool di nodi
utilizzando il comando gcloud container node-pools
describe
. Per gli upgrade blu/verdi, il comando restituisce anche la fase corrente dell'upgrade.
Esegui questo comando:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi da descrivere.CLUSTER_NAME
: il nome del cluster del pool di nodi da descrivere.
Questo comando mostrerà le impostazioni di upgrade correnti. L'esempio seguente mostra l'output se utilizzi la strategia di upgrade blu/verde.
upgradeSettings:
blueGreenSettings:
nodePoolSoakDuration: 1800s
standardRolloutPolicy:
batchNodeCount: 1
batchSoakDuration: 10s
strategy: BLUE_GREEN
Se utilizzi la strategia di upgrade blu/verde, l'output include anche dettagli sulle impostazioni dell'upgrade blu/verde e sulla relativa fase intermedia corrente. L'esempio seguente mostra il seguente aspetto:
updateInfo:
blueGreenInfo:
blueInstanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
greenInstanceGroupUrls:
- https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
greenPoolVersion: {GREEN_POOL_VERSION}
phase: DRAINING_BLUE_POOL
Annullamento di un upgrade del pool di nodi in corso...
Puoi annullare un upgrade in qualsiasi momento. Per saperne di più su cosa succede quando per annullare un upgrade di incremento, consulta Annullare un upgrade di sovraccarico. Per scoprire di più su cosa succede quando annulli un upgrade blu/verde, consulta Annullare un upgrade blu/verde.
Recupera l'ID operazione dell'upgrade:
gcloud container operations list
Annulla l'upgrade:
gcloud container operations cancel OPERATION_ID
Consulta le
gcloud container operations cancel
documentazione.
Riavviare un upgrade del pool di nodi
Puoi riprendere un upgrade avviandolo manualmente nuovamente, specificando la versione di destinazione dell'upgrade originale.
Se, ad esempio, un upgrade non è riuscito o se hai messo in pausa un upgrade in corso, potresti riprendere l'upgrade annullato avviando di nuovo lo stesso upgrade sul nodo del pool, specificando la versione di destinazione dell'operazione di upgrade iniziale.
Per saperne di più su cosa succede quando riprendi un upgrade, consulta Riprendi un upgrade di sovraccarico e upgrade blu/verde.
Per riprendere un upgrade, utilizza il comando seguente:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--cluster-version VERSION
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi per cui vuoi riprendere l'upgrade.CLUSTER_NAME
: il nome del cluster del pool di nodi per cui vuoi riprendere l'upgrade.VERSION
: la versione di destinazione del nodo annullato upgrade della piscina.
Per saperne di più, consulta gcloud container clusters upgrade
documentazione.
Eseguire il rollback di un upgrade del pool di nodi
Puoi eseguire il rollback di un pool di nodi per eseguire il downgrade dei nodi di cui è stato eseguito l'upgrade al pool originale precedente all'avvio dell'upgrade del pool di nodi.
Utilizza il comando rollback
se un upgrade in corso è stato annullato, se l'upgrade non è riuscito o se è incompleto a causa del timeout di una finestra di manutenzione. In alternativa, se vuoi specificare la versione, segui le istruzioni per il downgrade del pool di nodi.
Per saperne di più su cosa succede quando esegui il rollback di un upgrade del pool di nodi, consulta Eseguire il rollback di un upgrade di sovraccarico oppure Esegui il rollback di un upgrade blu/verde.
Per eseguire il rollback di un upgrade, esegui il seguente comando:
gcloud container node-pools rollback NODE_POOL_NAME \
--cluster CLUSTER_NAME
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi per il quale per eseguire il rollback dell'upgrade del pool di nodi.CLUSTER_NAME
: il nome del cluster del pool di nodi per cui eseguire il rollback dell'upgrade.
Consulta la documentazione di gcloud container node-pools rollback
.
Completare un upgrade del pool di nodi
Se utilizzi la strategia di upgrade blu/verde, puoi completare un upgrade del pool di nodi durante la fase di assorbimento, omettendo il resto del tempo di assorbimento.
Per scoprire come funziona l'upgrade di un pool di nodi, consulta Completare l'upgrade del pool di nodi.
Per completare un upgrade quando utilizzi la strategia di upgrade blue-green, esegui il seguente comando:
gcloud container node-pools complete-upgrade NODE_POOL_NAME \
--cluster CLUSTER_NAME
Sostituisci quanto segue:
NODE_POOL_NAME
: il nome del pool di nodi per cui vuoi completare l'upgrade.CLUSTER_NAME
: il nome del cluster del nodo per il quale vuoi completare l'upgrade.
Consulta le gcloud container node-pools complete-upgrade
documentazione.
Problemi noti
Se hai configurato oggetti PodDisruptionBudget
che non sono in grado di consentire ulteriori interruzioni, l'upgrade dei nodi alla versione del piano di controllo potrebbe non riuscire dopo ripetuti tentativi. Per evitare questo errore, consigliamo di eseguire l'upgrade di Deployment
o HorizontalPodAutoscaler
per consentire lo svuotamento del nodo rispettando al contempo la configurazione di PodDisruptionBudget
.
Per visualizzare tutti gli oggetti PodDisruptionBudget
che non consentono interruzioni:
kubectl get poddisruptionbudget --all-namespaces -o jsonpath='{range .items[?(@.status.disruptionsAllowed==0)]}{.metadata.name}/{.metadata.namespace}{"\n"}{end}'
Sebbene gli upgrade automatici possano
riscontrare il problema, l'upgrade automatico
processo forza l'upgrade dei nodi. Tuttavia, l'upgrade richiede un'ora in più
per ogni nodo nello spazio dei nomi istio-system
che viola le
PodDisruptionBudget.
Risoluzione dei problemi
Ripristinare o annullare un upgrade incompleto del pool di nodi
Se GKE non ha completato un upgrade del pool di nodi e i nodi aggiornato parzialmente alla nuova versione, puoi ripristinare o eseguire la l'upgrade. Questo è importante per gli upgrade dei pool di nodi che utilizzano la strategia di upgrade dei nodi, gli upgrade per picchi o gli upgrade blu/verde.
Potresti avere un pool di nodi di cui è stato eseguito l'upgrade parziale per uno dei seguenti motivi:
- Hai annullato l'upgrade del pool di nodi.
- L'upgrade non è riuscito a causa di un problema imprevisto.
- L'upgrade non è completo a causa di un timeout per il periodo di manutenzione.
Segui le istruzioni per ripristinare o eseguire il rollback del eseguire l'upgrade in modo che tutti i nodi nel pool di nodi eseguano una versione coerente. Se non fai nulla, GKE tenta di eseguire nuovamente l'upgrade del pool di nodi quando è disponibile la manutenzione.
Utilizzo della CPU dei nodi superiore al previsto
Potresti riscontrare un problema per cui alcuni nodi utilizzano una CPU più elevata rispetto a come previsto dai pod in esecuzione.
Questo può accadere se sul cluster o sui nodi non è in esecuzione un versione supportata. Leggi le note di rilascio per assicurarti che le versioni che stai utilizzando siano disponibili e supportate. Puoi anche eseguire il seguente comando per elencare tutte le versioni del cluster e dei nodi supportate:
gcloud container get-server-config
Passaggi successivi
- Scopri di più sull'architettura del cluster.
- Scopri di più sui canali di rilascio.