Questo argomento spiega come aggiornare i cluster del carico di lavoro di Tanzu Kubernetes Grid (TKG). Per TKG con un cluster di gestione autonomo, è innanzitutto necessario aggiornare il cluster di gestione che gestisce i cluster del carico di lavoro.
Importante
- Per aggiornare i cluster del carico di lavoro distribuiti con il supervisore in vSphere 8, vedere Aggiornamento dei cluster distribuiti dal supervisore (solo vSphere 8) in Creazione e gestione di cluster del carico di lavoro TKG 2.4 con la CLI di Tanzu.
- Per aggiornare i cluster del carico di lavoro Edge che utilizzano modelli di macchine virtuali archiviati in locale, vedere Aggiornamento di un cluster Edge con un modello di macchina virtuale locale.
- Per aggiornare i cluster del carico di lavoro creati da un manifesto del cluster personalizzato, vedere Aggiornamento dei cluster personalizzati.
- I cluster di gestione autonomi e i cluster del carico di lavoro utilizzano certificati client per eseguire l'autenticazione dei client. Questi certificati sono validi per un anno. Per rinnovarli, aggiornare i cluster almeno una volta all'anno.
ImportanteTanzu Kubernetes Grid v2.4.x è l'ultima versione di TKG che supporta l'aggiornamento dei cluster del carico di lavoro TKG esistenti in AWS e Azure. La possibilità di aggiornare i cluster del carico di lavoro TKG in AWS e Azure verrà rimossa nella versione Tanzu Kubernetes Grid v2.5.
A partire da ora, VMware consiglia di utilizzare Tanzu Mission Control per creare cluster AWS EKS e Azure AKS nativi. L'aggiornamento dei cluster del carico di lavoro TKG esistenti in AWS e Azure rimane comunque completamente supportato per tutte le versioni di TKG fino a TKG v2.4.x incluso.
Per ulteriori informazioni, vedere Deprecazione dei cluster di gestione e del carico di lavoro TKG in AWS e Azure nelle Note di rilascio di VMware Tanzu Kubernetes Grid v2.4.
Il processo di aggiornamento consente di aggiornare la versione di Kubernetes in tutti i nodi del piano di controllo e in tutti i nodi worker dei cluster del carico di lavoro.
Per visualizzare un elenco interattivo dei cluster di gestione disponibili e selezionare il cluster di gestione che gestisce i cluster che si desidera aggiornare, eseguire il comando tanzu context use
:
tanzu context use
Per elencare i cluster del carico di lavoro, eseguire:
tanzu cluster list --include-management-cluster -A
Il comando tanzu cluster list
con le opzioni --include-management-cluster -A
mostra la versione di Kubernetes in esecuzione nel cluster di gestione e tutti i cluster che gestisce. In questo esempio, è possibile notare che il cluster di gestione è già stato aggiornato alla versione v1.27.5, ma i cluster del carico di lavoro eseguono versioni precedenti di Kubernetes.
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
k8s-1-25-10-cluster default running 1/1 1/1 v1.25-10+vmware.1 <none> dev v1.25.10---vmware.1-tkg.1
k8s-1-26-5-cluster default running 1/1 1/1 1.26.5+vmware.1 <none> dev v1.26.5---vmware.1-tkg.1
mgmt-cluster tkg-system running 1/1 1/1 v1.27.5+vmware.1 management dev v1.27.5---vmware.1-tkg.1
Per individuare le versioni di Kubernetes rese disponibili da un cluster di gestione, eseguire il comando tanzu kubernetes-release get
.
tanzu kubernetes-release get
L'output elenca tutte le versioni di Kubernetes che è possibile utilizzare per distribuire i cluster, con le note seguenti:
COMPATIBLE
: Il cluster di gestione attuale può distribuire cluster del carico di lavoro con questa versione di Tanzu Kubernetes (tkr
).UPDATES AVAILABLE
: Questo tkr
non è il più recente nella riga della versione di Kubernetes. Tutti i cluster del carico di lavoro che eseguono questa versione di tkr
possono essere aggiornati alle versioni più recenti.Ad esempio:
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.25.13---vmware.1-tiny.2-tkg.1 v1.25.13+vmware.1-tiny.2-tkg.1 True True
v1.25.13---vmware.2-tkg.1 v1.25.13+vmware.2-tkg.1 True True
v1.26.8---vmware.1-tiny.2-tkg.1 v1.26.8+vmware.1-tiny.2-tkg.1 True True
v1.26.8---vmware.2-tkg.1 v1.26.8+vmware.2-tkg.1 True True
v1.27.5---vmware.1-tiny.2-tkg.1 v1.27.5+vmware.1-tiny.2-tkg.1 True True
v1.27.5---vmware.1-tkg.1 v1.27.5+vmware.2-tkg.1 True True
Per individuare le versioni di tkr
più recenti a cui è possibile aggiornare un cluster del carico di lavoro che esegue una versione precedente di tkr
, eseguire il comando tanzu kubernetes-release available-upgrades get
specificando la versione corrente di tkr
:
tanzu kubernetes-release available-upgrades get v1.26.5---vmware.2-tkg.1
Questo comando elenca tutte le versioni di Kubernetes disponibili a cui è possibile aggiornare i cluster di che eseguono la versione specificata.
È inoltre possibile individuare le versioni di tkr
disponibili per un cluster del carico di lavoro specifico specificando il nome del cluster nel comando tanzu cluster available-upgrades get
:
tanzu cluster available-upgrades get k8s-1-26-5-cluster
Questo comando elenca tutte le versioni di Kubernetes compatibili con il cluster specificato.
Non è possibile ignorare le versioni secondarie durante l'aggiornamento della versione di tkr
. Ad esempio, non è possibile aggiornare un cluster direttamente dalla versione v1.25.x alla versione v1.27.x. Il cluster v1.25.x deve essere aggiornato alla versione v1.26.x prima di poter essere aggiornato alla versione v1.26.x.
(Azure) Se il cluster è in esecuzione in Azure, impostare la variabile di ambiente AZURE_CLIENT_SECRET
prima di aggiornare il cluster:
export AZURE_CLIENT_SECRET=YOUR-AZURE-CLIENT-SECRET
(vSphere) Qualsiasi cluster che utilizza IPAM del nodo richiede almeno un indirizzo IP non assegnato nel proprio pool di IP prima dell'aggiornamento.
Per verificare se un cluster utilizza l'IPAM del nodo, cercare addressesFromPools
nell'impostazione spec.topology.variables
network
dell'oggetto cluster:
kubectl -n NAMESPACE get cluster CLUSTER-NAME -o json | jq '.spec.topology.variables[] | select(.name=="network")'
Dove CLUSTER-NAME
e NAMESPACE
sono il nome del cluster del carico di lavoro e lo spazio dei nomi del cluster di gestione. Ad esempio:
kubectl -n default get cluster my-work-cluster -o json | jq '.spec.topology.variables[] | select(.name=="network")'
{
"name": "network",
"value": {
"addressesFromPools": [
{
"apiGroup": "ipam.cluster.x-k8s.io",
"kind": "InClusterIPPool",
"name": "mgmt-cluster-nimbus"
}
],
"ipv6Primary": false
}
}
Per verificare che il pool di IP del cluster contenga indirizzi inutilizzati, confrontare il numero totale nel pool con il numero attualmente allocato, come output dal comando seguente:
kubectl -n NAMESPACE get ipaddress | grep POOL-NAME | wc -l
Eseguire il comando tanzu cluster upgrade CLUSTER-NAME
e immettere y
per confermare. Per ignorare il passaggio di conferma, specificare l'opzione --yes
.
Per aggiornare il cluster alla versione predefinita di Kubernetes per questa versione di Tanzu Kubernetes Grid, eseguire il comando tanzu cluster upgrade
senza alcuna opzione. In questa versione, la versione predefinita è v1.27.5
. Ad esempio:
tanzu cluster upgrade k8s-1-26-5-cluster
Se il cluster non è in esecuzione nello spazio dei nomi default
, specificare l'opzione --namespace
:
tanzu cluster upgrade CLUSTER-NAME --namespace NAMESPACE-NAME
Se si verifica il timeout di un aggiornamento prima del completamento, eseguire nuovamente tanzu cluster upgrade
e specificare l'opzione --timeout
impostando un valore maggiore del valore predefinito di 30 minuti.
tanzu cluster upgrade CLUSTER-NAME --timeout 45m0s
ImportanteIn alcuni casi, le operazioni su Azure impiegano più tempo rispetto ad altre piattaforme. Se si stanno aggiornando cluster in Azure, impostare di routine l'opzione
--timeout
per evitare errori.
Se più immagini di macchine virtuali di base nell'account IaaS hanno la stessa versione di Kubernetes a cui si sta eseguendo l'aggiornamento, utilizzare l'opzione --os-name
per specificare il sistema operativo desiderato. Per ulteriori informazioni, vedere Selezione di un sistema operativo durante l'aggiornamento del cluster.
Se ad esempio in vSphere sono stati caricati entrambi i modelli OVA di Photon e Ubuntu con Kubernetes v1.27.5, specificare --os-name ubuntu
per aggiornare il cluster del carico di lavoro in modo che venga eseguito in Ubuntu.
tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
Dato che non è possibile ignorare le versioni secondarie di tkr
, se si tenta di aggiornare un cluster la cui versione è precedente alla versione predefinita di più di una versione secondaria, il comando di aggiornamento non riesce. Ad esempio, non è possibile eseguire l'aggiornamento direttamente da v1.25.x a v1.27.x. Per aggiornare un cluster a una versione di Kubernetes che non sia la versione predefinita per questa versione di Tanzu Kubernetes Grid, specificare l'opzione --tkr
con il NAME
della versione scelta, come indicato dal precedente tanzu kubernetes-release get
. Ad esempio, per aggiornare il cluster k8s-1-24-11-cluster
da v1.25.13 a v1.26.8.
tanzu cluster upgrade k8s-1-25-13-cluster --tkr v1.26.8---vmware.1-tkg.1
Al termine dell'aggiornamento, eseguire il comando tanzu cluster list
per verificare che il cluster del carico di lavoro sia stato aggiornato.
tanzu cluster list --include-management-cluster -A
Rigenerare il kubeconfig
di amministrazione:
tanzu cluster kubeconfig get CLUSTER-NAME --admin
In cui CLUSTER-NAME
è il nome del cluster del carico di lavoro.
ImportanteSe non si rinnova
kubeconfig
dopo l'aggiornamento, non sarà possibile accedere al cluster dopo la scadenza.
Se si utilizza un provider di identità LDAP o OIDC, verificare che sia possibile eseguire l'autenticazione nel cluster con kubectl
. Ad esempio:
kubectl get pods -A --kubeconfig my-cluster-credentials
Aggiornare tutti i pacchetti gestiti dalla CLI come Contour, Fluent Bit o Prometheus in esecuzione nei cluster del carico di lavoro. Per ulteriori informazioni sull'aggiornamento dei pacchetti gestiti dalla CLI, vedere Aggiornamento di un pacchetto.
ImportanteSe Prometheus è installato in un cluster del carico di lavoro e si aggiorna il cluster del carico di lavoro a Kubernetes v1.25, è necessario aggiornare Prometheus come minimo alla versione
2.37.0+vmware.3-tkg.1
. Le versioni precedenti del pacchetto di Prometheus, ad esempio la versione2.37.0+vmware.1-tkg.1
, non sono compatibili con Kubernetes 1.25.
Non è possibile utilizzare il comando tanzu cluster upgrade
per aggiornare la versione di Kubernetes di un cluster del carico di lavoro Edge con un modello di macchina virtuale locale, come descritto sopra in Specifica di un modello di macchina virtuale locale.
Aggiornare invece la versione di Kubernetes del cluster del carico di lavoro Edge come indicato di seguito:
Caricare il nuovo modello di macchina virtuale nel vCenter locale e registrarne il percorso di inventario, ad esempio /dc0/vm/ubuntu-2004-kube-v1.27.5+vmware.1-tkg.1
.
Modificare il manifesto per l'oggetto Cluster
da aggiornare:
kubectl edit cluster CLUSTER-NAME
Dove CLUSTER-NAME
è il nome del cluster
In spec.topology
aggiornare quanto segue:
version
in modo che rifletta la nuova versione di Kubernetes.vcenter.template
da aggiornare, a livello di cluster o in singole distribuzioni di macchine, nel percorso dell'inventario del nuovo modello locale.Salvare e uscire per applicare le nuove impostazioni dell'oggetto Cluster
.
Ora è possibile continuare a utilizzare la CLI di Tanzu per gestire i cluster. Per ulteriori informazioni, vedere Creazione e gestione di cluster del carico di lavoro TKG 2.4 con la CLI di Tanzu.