È possibile aggiornare un cluster di Tanzu Kubernetes cambiando la classe di macchine virtuali utilizzata per ospitare i nodi del cluster.

Servizio Tanzu Kubernetes Grid supporta l'aggiornamento di un cluster modificando la definizione di VirtualMachineClass. In questo caso, il servizio esegue il rollout di nuovi nodi con la nuova classe e disattiva i nodi precedenti. Vedere Informazioni sugli aggiornamenti dei cluster di Tanzu Kubernetes.
Nota: VirtualMachineClass deve essere associata al Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster di Tanzu Kubernetes. Vedere Classi di macchine virtuali per i cluster di Tanzu Kubernetes.

Prerequisiti

Questa attività utilizza il comando kubectl edit tanzukubernetescluster/CLUSTER-NAME per aggiornare il manifesto del cluster. Il comando kubectl edit apre il manifesto del cluster nell'editor di testo definito dalla variabile di ambiente KUBE_EDITOR o EDITOR. Quando si salva il file, il cluster viene aggiornato con le modifiche. Vedere Specificare un editor di testo predefinito per Kubectl.

Procedura

  1. Eseguire l'autenticazione con il Cluster supervisore. Vedere Connessione al Cluster supervisore come utente vCenter Single Sign-On.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. Passare al contesto dello Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster Tanzu Kubernetes di destinazione.
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. Descrivere il cluster Tanzu Kubernetes di destinazione e controllare la classe di macchine virtuali.
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    Ad esempio, questo cluster utilizza la classe di macchine virtuali best-effort-medium:
    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-medium
          ...
        Workers:
          Class:          best-effort-medium
          ...
    
  4. Elencare e descrivere le classi di macchine virtuali disponibili nello spazio dei nomi.
    kubectl get virtualmachineclassbindings
    Nota: Il comando kubectl get virtualmachineclasses elenca tutte le classi di macchine virtuali presenti nel Cluster supervisore. Poiché è necessario associare classi di macchine virtuali al Spazio dei nomi vSphere, è possibile utilizzare solo le classi di macchine virtuali associate allo spazio dei nomi di destinazione.
  5. Eseguire il comando seguente per modificare il manifesto del cluster.
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
  6. Modificare il manifesto modificando la stringa version e annullando l'impostazione o impostando su null fullVersion per evitare la potenziale non corrispondenza della versione durante l'individuazione.
    Ad esempio, modificare il manifesto del cluster utilizzando la classe di macchine virtuali best-effort-medium per il piano di controllo e i nodi di lavoro:
    spec:
      topology:
        controlPlane:
          class: best-effort-medium
          ...
        workers:
          class: best-effort-medium
          ...
    
    Per utilizzare la classe di macchine virtuali guaranteed-large per il piano di controllo e i nodi di lavoro:
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        workers:
          class: guaranteed-large
          ...
    
  7. Salvare le modifiche apportate al file manifesto.
    Quando si salva il file, kubectl applica le modifiche al cluster. In background, il Servizio Tanzu Kubernetes Grid esegue il provisioning delle nuove macchine virtuali dei nuovi nodi e disattiva quelle precedenti.
  8. Verificare che kubectl riporti che le modifiche al manifesto sono state registrate correttamente.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
    Nota: Se si riceve un errore o kubectl non riporta che il manifesto del cluster è stato modificato correttamente, assicurarsi di aver configurato correttamente l'editor di testo predefinito utilizzando la variabile di ambiente KUBE_EDITOR. Vedere Specificare un editor di testo predefinito per Kubectl.
  9. Verificare che sia in corso l'aggiornamento del cluster.
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   21h   updating
  10. Verificare che il cluster sia aggiornato.
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   22h   running