Se você não conseguir provisionar um cluster TKG 2, revise esta lista de erros comuns para solucionar problemas.
Verificar logs da API do cluster
Se você não puder criar um cluster TKG, verifique se o CAPW/V está funcionando.
O controlador CAPW/V é a implementação específica da infraestrutura da API de cluster. O CAPW/V é ativado por meio de Supervisor. O CAPW/V é um componente do TKG e é responsável por gerenciar o ciclo de vida dos clusters do TKG.
O CAPW/V é responsável por criar e atualizar o VirtualNetwork. A criação dos nós de cluster somente poderá ser realizada se a VirtualNetwork estiver pronta. O fluxo de trabalho de criação do cluster foi aprovado nessa fase?
O CAPW/V é responsável por criar e atualizar o VirtualMachineService. O VirtualMachineService foi criado com êxito? Obteve o IP externo? O fluxo de trabalho de criação do cluster foi aprovado nessa fase?
kubectl config use-context tkg-cluster-ns
kubectl get pods -n vmware-system-capw | grep capv-controller
kubectl logs -n vmware-system-capw -c manager capv-controller-manager-...
Erros ao aplicar o YAML do cluster TKG
- A rede de cluster não está no estado correto
-
Entenda o fluxo de trabalho de provisionamento de cluster do TKG:
- O CAPV cria um objeto VirtualNetwork para cada rede de cluster do TKG.
- Se Supervisor estiver configurado com a rede NSX, o NCP observará os objetos VirtualNetwork e criará um roteador NSX de Camada 1 e um segmento NSX para cada VirtualNetwork.
- O CAPV verifica o status do VirtualNetwork e, quando estiver pronto, prossegue para a próxima etapa do fluxo de trabalho.
O controlador de serviço de VM está procurando objetos personalizados criados pelo CAPV e usa essas especificações para criar e configurar as VMs que compõem o cluster TKG.
NSX Container Plugin (NCP) é um controlador que observa os recursos de rede adicionados ao etcd por meio da API Kubernetes e orquestra a criação de objetos correspondentes em NSX.
Cada um desses controladores é executado como pods do Kubernetes no plano de controle Supervisor. Para solucionar problemas de rede, verifique o log do Controlador CAPV, o log do Serviço de VM e o log do NCP.
- Contagem de nós do plano de controle inválida
-
O cluster TKG em Supervisor é compatível com 1 ou 3 nós do plano de controle. Se você inserir um número diferente de réplicas, o provisionamento do cluster falhará.
- Classe de armazenamento inválida para a VM do plano de controle/worker
-
Execute o seguinte comando:
kubectl describe ns <tkg-clsuter-namesapce>
Certifique-se de que uma classe de armazenamento tenha sido atribuída ao namespace no qual você está tentando criar o cluster TKG. É preciso que haja um ResourceQuota em vSphere Namespace fazendo referência a essa classe de armazenamento, e a classe de armazenamento precisa existir em Supervisor.
Certifique-se de que o nome corresponda à classe de armazenamento presente em Supervisor. Execute
kubectl get storageclasses
Supervisor como administrador vSphere. O WCP pode transformar o nome ao aplicar o perfil de armazenamento a Supervisor (por exemplo, os hífens se tornam sublinhados). - Classe de VM inválida
-
Certifique-se de que o valor fornecido no YAML do cluster corresponda a uma das classes de VM retornadas por
kubectl get virtualmachineclassbindings
. Somente classes associadas podem ser usadas por um cluster TKG. Uma classe de VM é associada quando você a adiciona ao vSphere Namespace.O comando
kubectl get virtualmachineclasses
retorna todas as classes de VM em Supervisor, mas somente aquelas que estão associadas podem ser usadas. - Não é possível encontrar distribuições TKR
-
Se você vir um erro semelhante ao seguinte:
“Error from server (unable to find Kubernetes distributions): admission webhook “version.mutating.tanzukubernetescluster.run.tanzu.vmware.com” denied the request: unable to find Kubernetes distributions”
Isso provavelmente ocorre devido a um problema na biblioteca de conteúdo. Para listar o que você tem disponível, use o comando
kubectl get virtualmachineimages -A
. O resultado é o que está disponível e sincronizado ou carregado na sua biblioteca de conteúdo.Para o TKG em Supervisor, há novos nomes de TKR que são compatíveis com a nova API do TKR. Você precisa nomear cada TKR corretamente na biblioteca de conteúdo.
Nome na biblioteca de conteúdo:
photon-3-amd64-vmi-k8s-v1.23.8---vmware.2-tkg.1-zshippable
Nome correspondente na especificação do cluster TKG:
version: v1.23.8+vmware.2-tkg.1-zshippable
TKG YAML é aplicado, mas nenhuma VM é criada
- Verificar recursos CAPI/CAPV
-
Verifique se a TKG criou os recursos de nível CAPI/CAPV.
- Verifique se o CAPV criou os recursos do VirtualMachine.
- Verifique os logs do Operador da VM para ver por que a VM não foi criada. Por exemplo, a implantação do OVF pode ter falhado devido a recursos insuficientes no host ESX.
- Verifique os logs do operador CAPV e VM.
- Verificar logs do NCP O NCP é responsável por realizar o VirtualNetwork, o VirtualNetworkInterface e o LoadBalancer para o plano de controle. Se houver algum erro relacionado a esses recursos, isso poderá ser um problema.
- Erro de serviços de máquina virtual
-
Erro de serviços de máquina virtual
- Execute
kubectl get virtualmachineservices
no seu namespace - Um Serviço de Máquina Virtual foi criado?
- Execute
kubectl describe virtualmachineservices
no seu namespace - Há erros relatados no Serviço de Máquina Virtual?
- Execute
- Erro de rede virtual
-
Execute
kubectl get virtualnetwork
no seu namespace.A Rede Virtual foi criada para este cluster?
Execute
kubectl describe virtual network
no seu namespace.A Interface de Rede Virtual foi criada para a VM?
O plano de controle do cluster TKG não está em execução
- Verificar se os recursos estavam prontos quando ocorreu o erro
-
Além de procurar logs, a verificação do status dos objetos relacionados ControlPlaneLoadBalancer ajudará você a entender se os recursos estavam prontos quando ocorreu o erro. Consulte solução de problemas de rede.
- É um plano de controle do Join Node que não está ativo ou é um Init Node?
-
Às vezes, as junções de nós não funcionam corretamente. Observe os logs do nó para uma determinada VM. O cluster pode estar sem os nós do trabalhador e do plano de controle se o nó init não for ativado com êxito.
- A ID do provedor não está definida no objeto de nó
-
Se a VM for criada, verifique se ela tem IPs e, em seguida, examine os logs do cloud-init (os comandos kubeadm são executados corretamente)
Verifique os logs do controlador CAPI para ver se há algum problema. Você pode verificar isso usando
kubectl get nodes
no cluster TKG e, em seguida, verificar se a ID do provedor existe no objeto de nó.
Nós de trabalhador do TKG não são criados
kubectl describe cluster CLUSTER-NAME
Verifique se há recursos de máquina virtual no namespace. Houve outros criados?
Caso contrário, verifique os logs do CAPV para ver por que ele não está criando os outros objetos de máquina virtual dados de inicialização não disponíveis.
Se o CAPI não puder se comunicar com o plano de controle do cluster TKG por meio do balanceador de carga, seja NSX com o IP da VM do nó ou VDS com o balanceador de carga externo, obtenha o kubeconfig do cluster TKG usando o segredo no namespace:
kubectl get secret -n <namespace> <tkg-cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tkg-cluster-kubeconfig; kubectl --kubeconfig tkg-cluster-kubeconfig get pods -A
Se isso falhar com 'conexão recusada', seu plano de controle provavelmente não foi inicializado corretamente. Se houver um tempo limite de E/S, verifique a conectividade com o endereço IP no arquivo kubeconfig.
NSX com balanceador de carga incorporado:
- Verifique se o plano de controle LB está ativo e acessível.
- Se o LB não tiver IP, verifique os logs do NCP e verifique a interface do usuário do NSX-T para ver se os componentes relacionados estão nos estados corretos. (NSX-T LB, VirtualServer, ServerPool devem estar todos em estado íntegro).
- Se o LB tiver IP, mas não estiver acessível (
curl -k https://<LB- VIP>:6443/healthz
deve retornar um erro não autorizado).Se o IP externo do tipo de serviço do LoadBalancer estiver em um estado "pendente", verifique se o cluster do TKG pode se comunicar com a API do Supervisor Kubernetes por meio do Supervisor LB VIP. Certifique-se de que não haja sobreposição de endereços IP.
- Verifique se o plano de controle do cluster do TKG relata algum erro (como não é possível criar o nó com a ID do provedor).
- O provedor de nuvem do cluster TKG não marcou o nó com a ID de provedor correta, portanto, a CAPI não pode comparar a ID do provedor no nó de cluster convidado e o recurso de máquina no cluster supervisor para verificar.
kubectl get po -n vmware-system-cloud-provider
kubectl logs -n vmware-system-cloud-provider <pod name>
Se o VMOP não reconciliar VirtualMachineService com êxito, verifique o log do Operador da VM.
Se o NCP tiver problemas ao criar recursos NSX-T, verifique o log do NCP.
kubectl get virtualmachine -n <namespace> <TKC-name>-control-plane-0 -o yaml
ssh vmware-system-user@<vm-ip> -i tkc-cluster-ssh
cat /var/log/cloud-init-output.log | less
Cluster TKG provisionado preso na fase "Criando"
Execute os seguintes comandos para verificar o status do cluster.
kubectl get tkc -n <namespace>
kubectl get cluster -n <namespace>
kubectl get machines -n <namespace>O KubeadmConfig estava presente, mas o CAPI não conseguiu encontrá-lo. Verificado se o token em vmware-system-capv tinha as permissões corretas para consultar kubeadmconfig
$kubectl --token=__TOKEN__ auth can-i get kubeadmconfig yesÉ possível que o cache do tempo de execução do controlador não estivesse sendo atualizado. Os caches de observação CAPI podem estar obsoletos e não estão selecionando os novos objetos. Se necessário, reinicie o capi-controller-manager para resolver o problema.
kubectl rollout restart deployment capi-controller-manager -n vmware-system-capv
vSphere Namespace Preso na fase "Encerrando"
Verifique se o TKR, o Supervisor e o vCenter estão sincronizados do ponto de vista da compatibilidade de versão.
kubectl describe namespace NAME
Foi encontrado o seguinte erro: "Erro do servidor (não é possível encontrar distribuições do Kubernetes): admissão webhook "version.mutating.tanzukubernetescluster.run.tanzu.vmware.com" negou a solicitação: não foi possível encontrar distribuições do Kubernetes"
kubectl get virtualmachineimages -A