I cluster Servizio TKG supportano un modello di aggiornamento in sequenza. È possibile avviare un aggiornamento in sequenza modificando la specifica del cluster. Alcune operazioni di sistema possono avviare un aggiornamento in sequenza. Prima di aggiornare l'ambiente, è necessario familiarizzare con il processo dell'aggiornamento in sequenza.

Modello di aggiornamento in sequenza per i cluster TKGS successivi a Servizio TKG 3.0

A partire Servizio TKG 3.0, il controller TKG è indipendente da vCenter Server e Supervisore. Vedere Utilizzo della Servizio TKG. Se si aggiornano questi componenti, non verrà avviato un aggiornamento in sequenza dei cluster TKGS.

L'aggiornamento della versione di Servizio TKG potrebbe attivare un aggiornamento in sequenza dei cluster TKGS.

Modello di aggiornamento in sequenza per i cluster TKGS precedenti a Servizio TKG 3.0

Il controller TKG viene eseguito nel Supervisore. Quando si aggiorna il Supervisore, il controller TKG viene aggiornato automaticamente se è disponibile un aggiornamento. Ogni aggiornamento del controller TKG può includere aggiornamenti per i servizi di supporto, ad esempio CNI, CSI, CPI, nonché aggiornamenti della configurazione per i cluster. Per supportare la compatibilità, il sistema esegue controlli preliminari e impone la conformità.

vSphere IaaS control plane utilizza un modello di aggiornamento in sequenza per i cluster TKG nel Supervisore. Il modello di aggiornamento in sequenza garantisce un tempo di inattività minimo durante il processo di aggiornamento del cluster. Gli aggiornamenti in sequenza includono l'aggiornamento delle versioni del software Kubernetes e l'infrastruttura e i servizi che supportano i cluster, come le configurazioni e le risorse delle macchine virtuali, i servizi e gli spazi dei nomi, nonché le risorse personalizzate. Affinché l'aggiornamento venga eseguito correttamente, la configurazione deve soddisfare diversi requisiti di compatibilità. Il sistema applica quindi le condizioni di ricontrollo per assicurarsi che i cluster siano pronti per gli aggiornamenti e supporta il rollback se l'upgrade del cluster non riesce.

È possibile avviare un aggiornamento in sequenza di un cluster TKG modificando alcuni aspetti del manifesto del cluster. Un aggiornamento in sequenza del cluster può essere avviato anche dal sistema. Ad esempio, quando viene eseguito un aggiornamento Spazi dei nomi vSphere, il sistema propaga immediatamente le configurazioni aggiornate a tutti i cluster del carico di lavoro. Questi aggiornamenti possono attivare un aggiornamento in sequenza dei nodi del cluster. Inoltre, una modifica a uno qualsiasi degli elementi di configurazione può avviare un aggiornamento in sequenza. Ad esempio, se si rinomina o si sostituisce VirtualMachineImage corrispondente a una versione di distribuzione, viene avviato un aggiornamento in sequenza man mano che il sistema tenta di avviare l'esecuzione di tutti i nodi nella nuova immagine. Inoltre, l'aggiornamento di un Supervisore attiverà probabilmente un aggiornamento in sequenza dei cluster del carico di lavoro distribuiti nel cluster. Ad esempio, quando vmware-system-tkg-controller-manager viene aggiornato, il sistema introduce nuovi valori nel generatore di manifesti e il controller avvia un aggiornamento in sequenza per distribuire tali valori.

Il processo di aggiornamento in sequenza per la sostituzione dei nodi del cluster è simile al processo di aggiornamento in sequenza dei pod in una distribuzione Kubernetes. Sono disponibili due controller distinti responsabili dell'esecuzione di un aggiornamento in sequenza dei cluster del carico di lavoro: il controller dei componenti aggiuntivi e il controller del cluster. All'interno di questi due controller sono presenti tre fasi chiave per un aggiornamento in sequenza: aggiornamento dei componenti aggiuntivi, aggiornamento del piano di controllo e aggiornamento dei nodi di lavoro. Queste fasi vengono eseguite in ordine e le verifiche preliminari impediscono l'inizio di un passaggio finché quello precedente non è sufficientemente avanzato. Questi passaggi possono essere ignorati se si stabilisce che non sono necessari. Ad esempio, un aggiornamento può influire solo sui nodi worker e pertanto non richiede alcun aggiornamento dei componenti aggiuntivi o dei piani di controllo.

Durante il processo di aggiornamento, il sistema aggiunge un nuovo nodo di cluster e attende che il nodo passi online con la versione di Kubernetes di destinazione. Il sistema contrassegna quindi il vecchio nodo per l'eliminazione, passa al nodo successivo e ripete il processo. Il vecchio nodo non viene eliminato finché non vengono rimossi tutti i pod. Ad esempio, se un pod viene definito con PodDisruptionBudgets che impedisce lo svuotamento completo di un nodo, il nodo viene isolato ma non viene rimosso finché non sarà possibile eliminare tale pod. Il sistema esegue innanzitutto l'upgrade di tutti i nodi del piano di controllo e quindi dei nodi worker. Durante un aggiornamento, lo stato del cluster diventa "aggiornamento in corso". Al termine del processo di aggiornamento in sequenza, lo stato del cluster diventa "in esecuzione".

I pod in esecuzione in un cluster non gestiti da un controller di replica verranno eliminati durante un aggiornamento della versione di Kubernetes come parte dello svuotamento del nodo di lavoro durante l'aggiornamento del cluster. Questo succede se l'aggiornamento del cluster viene attivato manualmente o automaticamente da un aggiornamento degli spazi dei nomi di vSphere o Supervisore. I pod non gestiti da un controller di replica includono i pod che non vengono creati come parte di una specifica Deployment o ReplicaSet. Per ulteriori informazioni, fare riferimento a Pod Lifecycle: Pod lifetime nella documentazione di Kubernetes.

Aggiornamenti in sequenza avviati dall'utente

È possibile avviare un aggiornamento in sequenza di un cluster TKG nel Supervisore aggiornando la versione di Release di Tanzu Kubernetes, aggiornando la classe della macchina virtuale e aggiornando la classe di storage. Per i dettagli, fare riferimento a uno dei seguenti argomenti.

Aggiornamenti in sequenza avviati dal sistema

In ogni versione di Supervisore, è possibile che vengano apportate modifiche a uno o più degli oggetti seguenti:
  • kubeadmcontrolplanetemplate/kubeadmcontrolplane
  • kubeadmconfigtemplate/kubeadmconfig
  • vspheremachinetemplate/vspheremachine (per vSphere 8.x)
  • wcpmachinetemplate/wcpmachine (per vSphere 7.x)
Quando Supervisore viene aggiornato, i controller core Cluster API (CAPI) attivano un aggiornamento in sequenza per i cluster del carico di lavoro TKG in modo che gli oggetti precedenti abbiano lo stato desiderato nei cluster del carico di lavoro in esecuzione.

In vSphere IaaS control plane, il controller TKG eseguito in Supervisore genera questi oggetti e li tiene sincronizzati con il codice di sistema. Questo significa che quando i controller vengono aggiornati al codice più recente, le modifiche apportate a uno qualsiasi degli oggetti precedenti causano un aggiornamento in sequenza dei cluster TKG esistenti. In breve, le modifiche del codice di sistema che influiscono su Supervisore comportano aggiornamenti in sequenza dei cluster TKG.

La tabella descrive le condizioni in cui è possibile prevedere un aggiornamento in sequenza automatico dei cluster del carico di lavoro ogni volta che Supervisore viene aggiornato.
Scenario di aggiornamento Descrizione
Aggiornamento da una versione 7.x di vCenter Server a una versione qualsiasi di vCenter Server

Potrebbe attivare un aggiornamento in sequenza di tutti i cluster Tanzu Kubernetes.

Un aggiornamento in sequenza viene attivato dal primo aggiornamento di Supervisore in seguito a un aggiornamento di vCenter Server. Un aggiornamento in sequenza in genere non viene attivato da un aggiornamento di Supervisore nello stesso vCenter Server.

Per informazioni specifiche dettagliate, consultare le note di rilascio.

Aggiornamento da una qualsiasi versione di vCenter Server a una versione 8.x di vCenter Server Attiverà un aggiornamento in sequenza di tutti i cluster TKG perché è necessario propagare le seguenti modifiche del codice:
  • I provider CAPI sottostanti devono essere spostati da CAPW a CAPV
  • Eseguire la migrazione dei cluster dai cluster CAPI senza classe a un cluster CAPI con classe
Aggiornamento dalla versione vCenter Server 8.0 GA (8.0.0) alle versioni vCenter Server 8.0.0b o 8.0.0c Attiverà un aggiornamento in sequenza dei cluster TKG specificati se si verifica uno dei casi seguenti:
  • Qualsiasi cluster TKG che utilizzava le impostazioni del proxy con un elenco noProxy non vuoto.
  • Tutti i cluster TKG se il servizio del registro Harbor incorporato è stato abilitato nel Supervisore.
Aggiornamento da vSphere 8.0.0b a vSphere 8.0.0c Nessun rollout automatico dei cluster del carico di lavoro
Aggiornamento da vSphere 8.0.0c a vSphere 8.0 Update 1 (8.0.1) Nessun rollout automatico dei cluster del carico di lavoro
Aggiornamento da qualsiasi versione 8.x di vSphere alla versione 8.0 U2 (8.0.2). Ciò causerà un aggiornamento in sequenza di tutti i TKC poiché devono essere apportate le seguenti modifiche:
  • vSphere 8.0 U2 contiene modifiche delle STIG a livello di Kubernetes per le TKR TKG 1.0 e TKG 2.0 in GCM come parte della ClusterClass.
  • Poiché i TKC a partire dalla versione 1.23 e successive sono compatibili per 8.0 U2, tutti i cluster verranno sottoposti a un aggiornamento in sequenza.
Aggiornamento da qualsiasi versione vSphere 8.x precedente alla versione 8.0 U2 (8.0.2) alla versione 8.0 U2c Ciò causerà un aggiornamento in sequenza di tutti i TKC poiché devono essere apportate le seguenti modifiche:
  • 8.0U2 contiene modifiche delle STIG a livello di k8s per le TKR TKG1.0 e TKG2.0 in GCM come parte della ClusterClass.
  • Poiché i TKC a partire dalla versione 1.23 e successive sono compatibili per 8.0 P03, tutti i cluster verranno sottoposti a un aggiornamento in sequenza.
Anche la modifica della libreria di contenuti che ospita le immagini TKR può attivare aggiornamenti in sequenza dei cluster TKG. L'aggiunta di nuove immagini, tramite una sottoscrizione o manualmente, non attiva un aggiornamento in sequenza dei cluster TKG. Tuttavia, se si modifica la libreria di contenuti e si aggiungono immagini con nomi diversi, verrà attivato un aggiornamento in sequenza di tutti i cluster TKG.

Si consideri ad esempio uno scenario in cui si utilizza una libreria di contenuti con sottoscrizione che usa automaticamente i nomi OVA definiti dal sistema. Si passa quindi a una libreria di contenuti locale e la si popola con gli stessi OVA ma assegnando loro nomi diversi. Ciò attiverà un aggiornamento in sequenza di tutti i cluster TKG perché la libreria di contenuti sostitutiva ha gli stessi OVA ma con nomi diversi definiti dall'utente.

Considerazioni sull'aggiornamento in sequenza per i cluster con più pool di nodi

Se si utilizzano cluster TKG con più pool di nodi, tenere in considerazione le informazioni seguenti relative agli aggiornamenti in sequenza.
Pool di nodi di lavoro

I pool di nodi di lavoro sono stati introdotti con l'API TKGS v1alpha2, rilasciata con vSphere 7 U3. I MachineDeployments dell'API del cluster è la primitiva Kubernetes sottostante dei pool di nodi di lavoro.

ClusterClass è stato introdotto con la versione vSphere 8 di TKGS. Entrambe le API v1alpha3 e v1beta1 si basano su ClusterClass (v1alpha3 è un livello di astrazione sopra ClusterClass).

Modalità di aggiornamento di più pool di nodi durante l'aggiornamento in sequenza
Quando si aggiorna un cluster del carico di lavoro TKGS sottoposto a provisioning con più pool di nodi, il modello di aggiornamento in sequenza varia in base alla versione di vSphere utilizzata.
vSphere API TKGS Comportamento di aggiornamento
TKG vSphere 7 API v1alpha2 Più pool di nodi all'interno dello stesso cluster vengono aggiornati contemporaneamente (simultaneamente)
TKG vSphere 8 API v1alpha3 e API v1beta1 Più pool di nodi all'interno dello stesso cluster vengono aggiornati seguendo un ordine logico (in sequenza)
Considerazioni sulle procedure consigliate

Il provisioning di un cluster TKGS vSphere 8 con più pool di nodi identici non ha alcuno scopo in termini di dimensionamento. I pool di nodi devono essere utilizzati per dimensioni diverse, classi di macchine virtuali, versioni di TKr e così via. Evitare di utilizzare più pool di nodi identici per giocare con il sistema e aggiornare i cluster più rapidamente perché non funzionerà.

I budget per le interruzioni dei pod sono il modo corretto per assicurarsi che gli aggiornamenti non interferiscano con le applicazioni in esecuzione. Il modo migliore per gestire questa operazione consiste nell'impostare PodDisruptionBudgets sui carichi di lavoro (vedere https://kubernetes.io/docs/tasks/run-application/configure-pdb/). L'API del cluster rispetta questi criteri e non terminerà una macchina se le soglie vengono superate.

Dettagli sull'aggiornamento in sequenza per i cluster TKGS 8 vSphere
Durante un aggiornamento della versione del cluster TKGS 8 vSphere:
  • i nodi del piano di controllo vengono aggiornati per primi, quindi viene eseguito il rollback di un nodo di lavoro alla volta a partire dal pool di nodi Zona A. Se vengono utilizzati due pool di nodi, verrà eseguito il rollout di un solo nodo di lavoro alla volta.
Durante gli aggiornamenti della variabile di configurazione del cluster:
  • i nodi del piano di controllo vengono aggiornati per primi, quindi viene eseguito il rollback di un nodo di lavoro per ogni pool di nodi. Ad esempio, se vengono utilizzati due pool di nodi, verrà eseguito il rollout di 2 nodi di lavoro alla volta.