kubectl “falhou ao negociar uma versão da API”

2

Olá desde ontem de manhã Estou com problemas ao tentar acessar um dos meus clusters do Kubernetes hospedados no mecanismo de contêiner do Google. Eu nunca tive problema até que ele começou a falhar, mas agora cada comando kubectl eu tento executar falhar dizendo "erro: falhou ao negociar uma versão da API".

ou seja:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.4",
GitCommit:"dd6b458ef8dbf24aff55795baa68f83383c9b3a9", GitTreeState:"clean",
BuildDate:"2016-08-01T16:45:16Z", GoVersion:"go1.6.2", Compiler:"gc",
Platform:"darwin/amd64"}
error: failed to negotiate an api version; server supports: map[], client
supports: map[v1:{} apps/v1alpha1:{} autoscaling/v1:{} componentconfig/v1alpha1:{} 
batch/v1:{} batch/v2alpha1:{} authentication.k8s.io/v1beta1:{} federation/v1beta1:{} 
rbac.authorization.k8s.io/v1alpha1:{} authorization.k8s.io/v1beta1:{} extensions/v1beta1:{} 
policy/v1alpha1:{}]

Eu tentei excluir, em seguida, recriar meu cluster sem sucesso e certifiquei-me de que a versão do Kubernetes fosse a mesma no servidor e no cliente (1.3.4). Eu posso ver o pool de instâncias em execução no console do Google Cloud, bem como o cluster quando eu vou para a guia do mecanismo de contêiner, mas eu tenho pouca idéia de como proceder a partir daqui, alguém pode me dar alguma luz sobre o que poderia estar acontecendo? / p>

Muito obrigado! Fabrice.

    
por Fabrice Armisen 23.08.2016 / 21:40

1 resposta

2

Eu tenho lutado com essa questão por alguns dias, mas finalmente encontrei uma solução que funcionou para mim. Eu queria "começar de novo" desde o início porque suspeitei que minha configuração estava quebrada / "envenenada", mas não tenho certeza de quais (se houver) das 8 primeiras etapas foram realmente necessárias:

  1. Fazer backup da configuração existente para gcloud e kubectl
    • mv ~/.kube/config ~/.kube/config.old
    • mv ~/.config ~/.config.old
  2. Excluir o sdk do Google Cloud
    • rm -rf ~/bin/google-cloud-sdk
  3. Remova as linhas do meu ~/.bash_profile que foram adicionadas durante o processo de instalação anterior usando um editor de texto (uma linha que define PATH e uma linha que permite a conclusão do bash)
  4. Faça o download do mais recente sdk do Google Cloud
  5. Descompacte o arquivo e execute o script install.sh
  6. Execute gcloud init e siga as instruções fornecidas
    • Eu respondi "y" para tudo (configure para uso com o mecanismo de contêiner do google, modifique o .bash_profile e ative o preenchimento do bash), mas minimamente você deve configurá-lo para uso com o mecanismo de contêiner do google
  7. gcloud components install kubectl
  8. clusters de contêiner do gcloud get-credentials

Quando eu executei kubectl version neste ponto, recebi um erro diferente! Isto é o que eu chamo de "progresso". Agora ele me disse que "o Google não conseguiu encontrar as credenciais padrão" e siga as instruções em esta página . Resumidamente:

  1. Crie a conta de serviço conforme descrito, baixe a chave .json e mova-a para um diretório de sua escolha
  2. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS para o caminho da chave que você baixou
  3. Instale o componente beta do gcloud ( gcloud components install beta )
  4. Executar gcloud beta auth application-default login

Depois disso, kubectl version funcionou novamente! Espero que isso funcione para você também.

    
por 04.10.2016 / 17:03