O arquivo de configuração não está disponível ao conectar
Este artigo descreve como corrigir problemas que ocorrem quando você não consegue se conectar a um cluster do AKS (Serviço de Kubernetes do Azure) devido a um arquivo de configuração ausente ou inválido.
Pré-requisitos
- CLI do Azure.
- A ferramenta de linha de comando do cluster do Kubernetes (kubectl). Como alternativa, você pode instalar o kubectl executando o comando az aks install-cli na CLI do Azure.
Sintomas
Durante uma tentativa de conexão de cluster, uma mensagem de erro semelhante ao seguinte texto é exibida:
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
error: You must be logged in to the server (the server has asked for the client to provide credentials)
Causas
A ferramenta kubectl e outras ferramentas de conexão do Kubernetes usam um arquivo de configuração local chamado config. O arquivo de configuração contém credenciais de autenticação e detalhes para se conectar ao cluster. Por padrão:
O comando az aks get-credentials na CLI do Azure, que é usado para obter credenciais de acesso para um cluster gerenciado do Kubernetes, modifica o arquivo ~/.kube/config .
O comando kubectl usa o arquivo kubeconfig (configuração kubectl) no diretório $HOME/.kube .
Portanto, o que acontece durante uma tentativa de sessão do Kubernetes depende do usuário que está executando o comando kubectl. Se você entrou como usuário A e executou os dois comandos, veja o que acontece:
O
az aks get-credentials
comando tenta adicionar os novos parâmetros kubeconfig no arquivo C:\Users\A\.kube\config .O comando kubectl tenta pesquisar o arquivo C:\Users\A\.kube\config .
Mas para kubectl, se o ponteiro para o arquivo kubeconfig tiver sido alterado, o arquivo usado para acessar o cluster deverá estar em um local diferente.
Observação
Um arquivo kubeconfig é uma referência a um arquivo que contém parâmetros de configuração para acessar clusters do Kubernetes. Ele não se refere necessariamente a um arquivo chamado kubeconfig.
O erro ocorrerá se ocorrer um dos seguintes cenários:
Causa 1: o arquivo de configuração não existe
O arquivo de configuração não existe em sua máquina.
Solução: salve as credenciais
Carregue o arquivo de configuração executando o comando na CLI do az aks get-credentials
Azure, que salva as credenciais. Se você não quiser usar o local padrão, especifique o --file <config-file-location>
parâmetro com o local de config (por exemplo, ~/Dir1/Dir2/config ou C:\Dir1\Dir2\config).
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
[--file <config-file-location>]
Causa 2: o arquivo de configuração está no diretório errado
O arquivo de configuração está em sua máquina, mas está em um diretório diferente de onde o az aks get-credentials
comando e/ou a ferramenta kubectl espera que ele esteja.
Solução: mova o arquivo de configuração , salve as credenciais novamente ou altere a variável de ambiente KUBECONFIG
Execute uma ou mais das seguintes ações:
Mova o arquivo de configuração para o diretório em que deseja que ele esteja.
Execute o comando
az aks get-credentials
. Especifique o local desejado se não for o local padrão.az aks get-credentials --resource-group <cluster-resource-group> \ --name <cluster-name> \ [--file <config-file-location>]
Use uma das seguintes opções para alterar onde kubectl procura parâmetros de configuração:
Modifique a variável de
KUBECONFIG
ambiente para apontar para o local atual do arquivo de configuração . Para obter mais informações, consulte Definir a variável de ambiente KUBECONFIG.Execute o comando kubectl config com o
--kubeconfig=<config-file-location>
parâmetro.
Causa 3: o arquivo de configuração expirou ou está corrompido
O arquivo de configuração está em sua máquina. Também está no diretório esperado para o az aks get-credentials
comando e a ferramenta kubectl. Mas o arquivo expirou ou está corrompido.
Solução: restabelecer as credenciais
Restabeleça as credenciais, pois as credenciais existentes podem estar expiradas ou corrompidas. Nesse caso, você pode executar o az aks get-credentials
comando com o --overwrite-existing
parâmetro.
az aks get-credentials --resource-group <cluster-resource-group> \
--name <cluster-name> \
--overwrite-existing \
[--file <config-file-location>]
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.