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:
- Instale ou atualize seu ambiente para a versão Supervisor mais recente. Consulte Executando clusters do TKG 2 em Supervisor.
- Crie ou atualize uma biblioteca de conteúdo com o Tanzu Kubernetes releases mais recente. Consulte Administrando versões de Tanzu Kubernetes para clusters TKG 2 em Supervisor.
- Crie e configure um vSphere Namespace para hospedar clusters do TKG 2. Consulte Configurando vSphere Namespaces para clusters TKG 2 em Supervisor.
Procedimento
- Instale o Kubernetes CLI Tools for vSphere.
- Autentique com Supervisor usando o kubectl.
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
- 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 que192.197.2.65
é o contexto Supervisor etkg2-cluster-namespace
é o contexto para vSphere Namespace em que você planeja provisionar o cluster TKG 2. - 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
- 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. - 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 formatotkg2-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 comandokubectl describe storageclasses
também retorna as classes de armazenamento disponíveis, mas requer vSphere permissões de administrador. - 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. - Crie o arquivo YAML para provisionar o cluster TKG.
- Determine o tipo de cluster que você criará e revise a API e os recursos dele:
- TanzuKubernetesCluster: Usando a API TanzuKubernetesCluster v1alpha3
- Cluster: Como usar a API do Cluster v1beta1
- Comece com um dos YAMLs de exemplo para provisionar o cluster.
- Salve seu arquivo YAML como
tkg2-cluster-1.yaml
ou similar. - 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
- O nome do cluster, como
- Personalize o YAML do cluster do TGK 2 conforme necessário.
- Adicionar volumes separados para componentes de alta rotatividade, como
etcd
econtainerd
- 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
- Adicionar volumes separados para componentes de alta rotatividade, como
- 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. - Determine o tipo de cluster que você criará e revise a API e os recursos dele:
- 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
- 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
- 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.
- 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. - 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 que192.197.2.65
é o contexto Supervisor,tkg2-cluster-namespace
é o contexto vSphere Namespace etkg2-cluster-1
é o contexto de cluster do TKG 2.Alterne para o contexto de cluster do TKG.kubect config use-context tkg2-cluster-1
- Verifique os recursos de cluster do TKG.
kubectl get nodes
kubectl get namespaces
kubectl get pods -A
kubectl cluster-info
kubectl api-resources
- Exercite o cluster do TKG 2 implantando um pod de teste e verifique se ele funciona conforme o esperado.