Você pode atualizar um cluster de carga de trabalho alterando a classe de máquina virtual usada para hospedar os nós de cluster.

Você pode iniciar uma atualização sem interrupção de um cluster TKG 2 alterando a definição VirtualMachineClass. Novos nós com base na classe alterada serão implementados e os nós antigos serão descontinuados.

Pré-requisitos

Esta tarefa requer o uso do comando de edição kubectl. Esse comando abre o manifesto do cluster no editor de texto definido pela variável de ambiente KUBE_EDITOR ou EDITOR. Quando você salva o arquivo, o cluster é atualizado com as alterações. Para configurar um editor para o kubectl, consulte Configurar um editor de texto para Kubectl.

Procedimento

  1. Autentique com o Supervisor.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. Alterne o contexto para o vSphere Namespace em que o cluster TKG de destino é provisionado.
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. Descreva o cluster TKG de destino e verifique a classe da VM.
    cluster v1alpha3:
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    cluster v1beta1:
    kubectl describe cluster CLUSTER-NAME
  4. Liste e descreva as classes de VM disponíveis no namespace.
    kubectl get virtualmachineclassbindings
    Observação: O VirtualMachineClass deve estar associado ao vSphere Namespace em que o cluster TKG é provisionado.
  5. Execute o seguinte comando para editar o manifesto do cluster.
    cluster v1alpha3:
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
    cluster v1beta1:
    kubectl edit cluster/CLUSTER-NAME
  6. Edite o manifesto alterando a cadeia de caracteres de classe da VM.
    Por exemplo, se você estiver usando um cluster v1alpah3, altere o manifesto do cluster usando a classe de VM guaranteed-medium para nós de trabalhador:
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.22.9---vmware.1-tkg.1.cc71bc8
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.22.9---vmware.1-tkg.1.cc71bc8
          vmClass: guaranteed-medium
    Para usar a classe de VM guaranteed-large para nós de trabalhador:
     topology:
        controlPlane:
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.22.9---vmware.1-tkg.1.cc71bc8
          vmClass: guaranteed-medium
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          storageClass: vwk-storage-policy
          tkr:
            reference:
              name: v1.22.9---vmware.1-tkg.1.cc71bc8
          vmClass: guaranteed-large
    Da mesma forma, se você tiver provisionado um cluster v1beta1, atualize o valor de variables.vmclass para a classe de VM de destino.
  7. Salve as alterações feitas no arquivo de manifesto.
    Quando você salva o arquivo, o kubectl aplica as alterações ao cluster. Em segundo plano, o controlador TKG provisiona as novas VMs de nó e desativa as antigas.
  8. Verifique se o kubectl relata que as edições do manifesto foram registradas com êxito.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
    Observação: Se você receber um erro ou se o kubectl não relatar que o manifesto do cluster foi editado com êxito, verifique se você configurou corretamente o editor de texto padrão usando a variável de ambiente KUBE_EDITOR. Consulte Configurar um editor de texto para Kubectl.
  9. Verifique se o cluster está atualizado.
    cluster v1alpha3:
    kubectl get tanzukubernetescluster
    cluster v1beta1:
    kubectl get cluster