È possibile aggiornare un cluster del Servizio TKG modificando la classe della macchina virtuale utilizzata per ospitare i nodi del cluster.

È possibile avviare un aggiornamento in sequenza di un Servizio cluster TKG modificando la definizione vmClass utilizzando il comando kubectl edit. I nuovi nodi basati sulla classe modificata vengono implementati e i vecchi nodi vengono eliminati.
Nota: Non è possibile utilizzare il comando kubectl apply per aggiornare un cluster TKG distribuito.

Prerequisiti

Questa attività richiede l'uso del comando modifica di kubectl. Questo comando 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. Per configurare un editor per kubectl, vedere Configurazione di un editor di testo per Kubectl.

Procedura

  1. Eseguire l'autenticazione con il Supervisore.
    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 TKG di destinazione.
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. Descrivere il cluster TKG di destinazione e controllare la classe di macchine virtuali.
    Cluster v1alpha3:
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    Cluster v1beta1:
    kubectl describe cluster CLUSTER-NAME
  4. Elencare e descrivere le classi di macchine virtuali disponibili nel Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster.
    kubectl get virtualmachineclass
    Nota: La classe della macchina virtuale di destinazione è associata al Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster TKG. Per informazioni dettagliate sul binding delle classi di macchine virtuali a Spazi dei nomi vSphere, fare riferimento alla documentazione del Servizio TKG o del Servizio della macchina virtuale.
  5. Eseguire il comando seguente per modificare il manifesto del cluster.
    Cluster v1alpha3:
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
    Cluster v1beta1:
    kubectl edit cluster/CLUSTER-NAME
  6. Modificare il manifesto modificando la stringa della classe di macchine virtuali.
    Ad esempio, se si utilizza un cluster v1alpah3, modificare il manifesto del cluster utilizzando la classe di macchine virtuali guaranteed-medium per i nodi di lavoro:
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
    Per utilizzare la classe di macchine virtuali guaranteed-large per i nodi di lavoro:
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.27.11---vmware.1-fips.1-tkg.2
          vmClass: guaranteed-large
    Analogamente, se è stato eseguito il provisioning di un cluster v1beta1, aggiornare il valore di variables.vmclass alla classe della macchina virtuale di destinazione.
  7. Salvare le modifiche apportate al file manifesto.
    Quando si salva il file, kubectl applica le modifiche al cluster. In background, il controller TKG 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 Configurazione di un editor di testo per Kubectl.
  9. Verificare che il cluster sia aggiornato.
    Cluster v1alpha3:
    kubectl get tanzukubernetescluster
    Cluster v1beta1:
    kubectl get cluster