Siga este fluxo de trabalho para provisionar um cluster TKG 2 de forma declarativa usando comandos kubectl e uma especificação de cluster definida no YAML.

Esse fluxo de trabalho é compatível com o provisionamento de um cluster TKG 2 de forma declarativa usando kubectl e YAML.

Pré-requisitos

Verifique ou conclua os seguintes pré-requisitos antes de iniciar o fluxo de trabalho de provisionamento:

Procedimento

  1. Instale o Kubernetes CLI Tools for vSphere.
  2. Autentique com Supervisor usando o kubectl.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  3. Verifique se o login foi bem-sucedido no Supervisor.
    Você deverá ver uma mensagem semelhante à seguinte:
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkg2-cluster-namespace
    Em que 192.197.2.65 é o contexto Supervisor e tkg2-cluster-namespace é o contexto para vSphere Namespace em que você planeja provisionar o cluster TKG 2.
  4. Verifique se o destino vSphere Namespace é o contexto atual.
    kubectl config get-contexts
    CURRENT   NAME                    CLUSTER         AUTHINFO                                        NAMESPACE
              192.197.2.65            192.197.2.65    wcp:10.197.154.65:[email protected]
    *         tkg2-cluster-namespace  10.197.154.65   wcp:10.197.154.65:[email protected]   tkg2-cluster-namespace
    
    Se o destino vSphere Namespace não for o contexto atual, alterne para ele.
    kubectl config use-context tkg2-cluster-namespace
  5. Liste as associações de classe de máquina virtual que estão disponíveis no destino vSphere Namespace.
    kubectl get virtualmachineclassbindings
    Você só pode usar as classes de VM que estão associadas ao namespace de destino. Se você não vir nenhuma classe de VM, verifique se o vSphere Namespace tem as classes de VM padrão adicionadas a ele.
  6. Obtenha as classes de armazenamento de volume persistente disponíveis.
    kubectl describe namespace VSPHERE-NAMESPACE-NAME
    O comando retorna detalhes sobre o namespace, incluindo a classe de armazenamento no formato tkg2-storage-policy.storageclass.storage.k8s.io/requests.storage. O primeiro token da cadeia de caracteres é o nome da classe de armazenamento, neste exemplo, tkg2-storage-policy. O comando kubectl describe storageclasses também retorna as classes de armazenamento disponíveis, mas requer vSphere permissões de administrador.
  7. Liste os Tanzu Kubernetes releases disponíveis.
    Você pode usar um dos seguintes comandos para executar esta operação:
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    Esse comando retorna os TKRs que estão disponíveis para você neste vSphere Namespace e mostra sua compatibilidade com o Supervisor no qual você está implantando. Você só pode usar as versões retornadas por esse comando. Se você não vir nenhuma versão ou a versão desejada, verifique se fez o seguinte: a) Criou uma biblioteca de conteúdo do TKR; b) Sincronizou a biblioteca de conteúdo com os arquivos OVA desejados; e c) Associou a biblioteca de conteúdo ao vSphere Namespace no qual você está provisionando o cluster TKG 2.
  8. Crie o arquivo YAML para provisionar o cluster TKG.
    1. Determine o tipo de cluster que você criará e revise a API e os recursos dele:
    2. Comece com um dos YAMLs de exemplo para provisionar o cluster.
    3. Salve seu arquivo YAML como tkg2-cluster-1.yaml ou similar.
    4. Preencha o YAML usando as informações que você coletou da saída dos comandos anteriores, incluindo:
      • O nome do cluster, como tkg2-cluster-1
      • O destino vSphere Namespace
      • Classes de VM vinculadas, como guaranteed-medium
      • Classe de armazenamento para nós de cluster e volumes persistentes
      • O número de nós do plano de controle e do trabalhador (réplicas)
      • A versão Tanzu Kubernetes especificada pela string TKR NAME, como v1.23.8---vmware.2-tkg.2-zshippable
    5. Personalize o YAML do cluster do TGK 2 conforme necessário.
      • Adicionar volumes separados para componentes de alta rotatividade, como etcd e containerd
      • Especificar uma classe de armazenamento persistente padrão para nós de cluster e volumes persistentes
      • Personalizar a rede de clusters, incluindo os CIDRs de CNI, pod e serviço
    6. Use um verificador de sintaxe YAML e verifique se o YAML é válido.
    O resultado dessa etapa é um YAML válido para provisionar o cluster TKG.
  9. Provisione o cluster do TKG 2 executando o seguinte comando.
    kubectl apply -f tkg2-cluster-1.yaml
    Resultado esperado:
    tanzukubernetescluster.run.tanzu.vmware.com/tkg2-cluster-1 created
  10. Monitore o provisionamento do cluster TKG 2.
    kubectl get tanzukubernetesclusters
    kubectl get tkc
    Ou seja, se você criar um cluster usando a API v1beta1:
    kubectl get cluster
    Inicialmente, o status READY é False, pois o cluster está sendo provisionado. Após alguns minutos, deve ser True.
    NAME              CONTROL PLANE   WORKER   TKR NAME                            AGE   READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkg2-cluster-1    3               6        v1.23.8---vmware.2-tkg.2-zshippable 49m   True    True
    Execute comandos adicionais para visualizar detalhes sobre o cluster.
    kubectl get tanzukubernetescluster,cluster,virtualmachinesetresourcepolicy,virtualmachineservice,kubeadmcontrolplane,machinedeployment,machine,virtualmachine
    kubectl describe tanzukubernetescluster tkg2-cluster-1
  11. Monitore a implantação de nós de cluster usando o vSphere Client.
    No inventário vSphere de Hosts and Clusters, você deve ver as VMs do nó do cluster implantadas no destino vSphere Namespace.
  12. Quando todos os nós de cluster do TKG 2 estiverem no estado PRONTO, faça login no cluster usando o vSphere Plugin for kubectl.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
    Por exemplo:
    kubectl vsphere login --server=192.197.2.65 --vsphere-username [email protected] \
    --tanzu-kubernetes-cluster-name tkg2-cluster-1 --tanzu-kubernetes-cluster-namespace tkg2-cluster-namespace
    Observação: O comando log in só terá êxito quando os nós do plano de controle estiverem em execução e o plug-in do serviço de autenticação for iniciado. Se os nós do trabalhador estiverem em processo de criação, o login poderá ser irregular. É recomendável que você efetue login quando todos os nós de cluster estiverem PRONTOS.
  13. Alterne o contexto para o cluster do TKG 2 para que ele seja o contexto atual.
    Ao fazer login com êxito no cluster do TKG 2, você deverá ver uma mensagem semelhante à seguinte.
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkg2-cluster-namespace
       tkg2-cluster-1
    Em que 192.197.2.65 é o contexto Supervisor, tkg2-cluster-namespace é o contexto vSphere Namespace e tkg2-cluster-1 é o contexto de cluster do TKG 2.
    Alterne para o contexto de cluster do TKG.
    kubect config use-context tkg2-cluster-1
  14. Verifique os recursos de cluster do TKG.
    kubectl get nodes
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  15. Exercite o cluster do TKG 2 implantando um pod de teste e verifique se ele funciona conforme o esperado.