Aggiornamento dei cluster del carico di lavoro

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

Prerequisiti

Prerequisiti dell'infrastruttura

Importante

Tanzu 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.

vSphere
Se si stanno aggiornando cluster in esecuzione in vSphere, prima di poter aggiornare i cluster a una versione non predefinita di Kubernetes per la versione di Tanzu Kubernetes Grid, devono essere disponibili in vSphere gli OVA dei modelli di immagine di base appropriati come modelli di macchine virtuali. Per informazioni sull'importazione dei file OVA in vSphere, vedere la scheda vSphere in Preparazione all'aggiornamento dei cluster.
AWS
Se si stanno aggiornando cluster in esecuzione su Amazon Web Services (AWS), le immagini delle macchine Amazon (AMI) di Amazon Linux 2 che includono le versioni di Kubernetes supportate sono disponibili pubblicamente per tutti gli utenti di AWS, in tutte le regioni di AWS supportate. Tanzu Kubernetes Grid utilizza automaticamente l'AMI appropriata per la versione di Kubernetes specificata durante l'aggiornamento.
Azure
Se si stanno aggiornando cluster in esecuzione in Azure, assicurarsi di aver completato i passaggi della scheda Azure in Preparazione all'aggiornamento dei cluster.


Procedura

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.

  1. 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
    
  2. 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.26.8, ma i cluster del carico di lavoro eseguono versioni precedenti di Kubernetes.

    NAME                 NAMESPACE   STATUS    CONTROLPLANE  WORKERS  KUBERNETES         ROLES       PLAN  TKR
    k8s-1-24-14-cluster  default     running   1/1           1/1      v1.24.14+vmware.1  <none>      dev   v1.24.14---vmware.1-tkg.1
    k8s-1-25-10-cluster  default     running   1/1           1/1      1.25.10+vmware.1   <none>      dev   1.25.10---vmware.1-tkg.1
    mgmt-cluster         tkg-system  running   1/1           1/1      v1.26.8+vmware.1   management  dev   v1.26.8---vmware.1-tkg.1
    
  3. 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.24.17---vmware.1-tiny.2-tkg.1  v1.24.17+vmware.1-tiny.2-tkg.1  True        True
    v1.24.17---vmware.2-tkg.1         v1.24.17+vmware.2-tkg.1         True        True
    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
    
  4. Per scoprire la nuova versione di tkr a cui eseguire l'aggiornamento di 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 di tkr attualmente in esecuzione:

    tanzu kubernetes-release available-upgrades get v1.25.10---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-24-14-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.24.x alla versione v1.26.x. Il cluster v1.24.x deve essere aggiornato alla versione v1.25.x prima di poter essere aggiornato alla versione v1.26.x.

  5. (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
    
  6. (vSphere) Qualsiasi cluster che utilizza IPAM del nodo richiede almeno un indirizzo IP non assegnato nel proprio pool di IP prima dell'aggiornamento.

    1. 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
        }
      } 
      
    2. 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
      
  7. 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.26.8. Ad esempio:

    tanzu cluster upgrade k8s-1-25-7-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
    
    Importante

    In 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 dispongono della stessa versione di Kubernetes a cui si sta eseguendo l'aggiornamento, è possibile includere --os-name e altre opzioni per specificare il sistema operativo di destinazione, come descritto in Selezionare un sistema operativo a cui eseguire l'aggiornamento:

    tanzu cluster upgrade CLUSTER-NAME --os-name ubuntu
    

    In vSphere, è possibile utilizzare l'opzione --vsphere-vm-template-name per specificare un modello OVA di destinazione per i nodi del cluster, come descritto in Selezionare un modello OVA a cui eseguire l'aggiornamento:

    tanzu cluster upgrade CLUSTER-NAME --vsphere-vm-template-name "/dc0/vm/tanzu/ubuntu-2004-kube-v1.29.9-vmware.1"
    

    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.24.x a v1.26.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-14-cluster da v1.24.14 a v1.25.13.

    tanzu cluster upgrade k8s-1-24-14-cluster --tkr v1.25.13---vmware.1-tkg.1
    
  8. 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
    
  9. Rigenerare il kubeconfig di amministrazione:

    tanzu cluster kubeconfig get CLUSTER-NAME --admin
    

    In cui CLUSTER-NAME è il nome del cluster del carico di lavoro.

    Importante

    Se non si rinnova kubeconfig dopo l'aggiornamento, non sarà possibile accedere al cluster dopo la scadenza.

  10. 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
    
  11. 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.

    Importante

    Se 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 versione 2.37.0+vmware.1-tkg.1, non sono compatibili con Kubernetes 1.25.

Aggiornamento di un cluster edge con un modello di macchina virtuale locale

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:

  1. Caricare il nuovo modello di macchina virtuale nel vCenter locale e registrarne il percorso di inventario, ad esempio /dc0/vm/ubuntu-2004-kube-v1.26.8+vmware.1-tkg.1.

  2. Modificare il manifesto per l'oggetto Cluster da aggiornare:

    kubectl edit cluster CLUSTER-NAME
    

    Dove CLUSTER-NAME è il nome del cluster

  3. In spec.topology aggiornare quanto segue:

    • Impostare version in modo che rifletta la nuova versione di Kubernetes.
    • Impostare tutti i valori vcenter.template da aggiornare, a livello di cluster o in singole distribuzioni di macchine, nel percorso dell'inventario del nuovo modello locale.
  4. Salvare e uscire per applicare le nuove impostazioni dell'oggetto Cluster.

Passaggi successivi

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.3 con la CLI di Tanzu.

check-circle-line exclamation-circle-line close-line
Scroll to top icon