Você pode atualizar um cluster do Tanzu Kubernetes alterando a classe da máquina virtual usada para hospedar os nós do cluster.

O Tanzu Kubernetes Grid Service oferece suporte à atualização de um cluster alterando a definição de VirtualMachineClass. Se você fizer isso, o serviço implementará novos nós com essa nova classe e reduzirá os nós antigos. Consulte o Sobre Tanzu Kubernetes atualizações de cluster.
Observação: O VirtualMachineClass deve ser vinculado ao vSphere Namespace onde o cluster Tanzu Kubernetes está provisionado. Consulte o Classes de máquina virtual para Tanzu Kubernetes clusters.

Pré-requisitos

Essa tarefa usa o comando kubectl edit tanzukubernetescluster/CLUSTER-NAME para atualizar o manifesto do cluster. O comando kubectl edit 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. Consulte o Especificar um editor de texto padrão para o Kubectl.

Procedimento

  1. Autentique-se com o Supervisor Cluster. Consulte o Conecte-se ao Supervisor Cluster como um usuário do vCenter Single Sign-On.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. Alterne o contexto para o vSphere Namespace onde o cluster Tanzu Kubernetes de destino está provisionado.
    kubectl config use-context SUPERVISOR-NAMESPACE
  3. Descreva o cluster Tanzu Kubernetes de destino e verifique a classe da VM.
    kubectl describe tanzukubernetescluster CLUSTER-NAME
    Por exemplo, este cluster está usando a classe de VM de melhor esforço:
    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-medium
          ...
        Workers:
          Class:          best-effort-medium
          ...
    
  4. Liste e descreva as classes de VM disponíveis no namespace.
    kubectl get virtualmachineclassbindings
    Observação: O comando kubectl get virtualmachineclasses lista todas as classes de VM presentes no Supervisor Cluster. Como você deve associar classes de VM ao vSphere Namespace, só pode usar as classes de VM que estão vinculadas ao namespace de destino.
  5. Execute o seguinte comando para editar o manifesto do cluster.
    kubectl edit tanzukubernetescluster/CLUSTER-NAME
  6. Edite o manifesto alterando a cadeia de caracteres version e removendo ou anulando o fullVersion para evitar uma possível incompatibilidade de versão durante a descoberta.
    Por exemplo, altere o manifesto do cluster de usar a classe de VM best-effort-medium para o plano de controle e os nós de trabalho:
    spec:
      topology:
        controlPlane:
          class: best-effort-medium
          ...
        workers:
          class: best-effort-medium
          ...
    
    Para usar a classe de VM guaranteed-large para o plano de controle e os nós de trabalho:
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        workers:
          class: guaranteed-large
          ...
    
  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 Tanzu Kubernetes Grid Service provisiona as novas VMs de nó e desacelera as antigas.
  8. Verifique se o kubectl informa 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 o kubectl não relatar que o manifesto do cluster foi editado com êxito, verifique se você configurou corretamente seu editor de texto padrão usando a variável de ambiente KUBE_EDITOR. Consulte o Especificar um editor de texto padrão para o Kubectl.
  9. Verifique se o cluster está sendo atualizado.
    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. Verifique se o cluster está atualizado.
    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