kubectl“未能谈判api版本”

您好,从昨天早上我遇到了试图访问我的Kubernetes集群托pipe在谷歌容器引擎的问题。 我从来没有问题,直到它开始失败,但现在每个kubectl命令我尝试执行失败告诉“错误:未能协商api版本”。

即:

$ 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:{}] 

我尝试删除然后重新创build群集没有成功,我确保kubernetes版本在服务器和客户端(1.3.4)上是相同的。 我可以看到在云端控制台运行的实例池以及集群,当我去容器引擎选项卡,但我有一点线索如何从这里开始,任何人都可以告诉我什么可能会发生什么?

非常感谢! 法布里斯。

我一直在为这个问题奋斗了几天,但终于find了一个解决scheme,为我工作。 我想从一开始就“重新开始”,因为我怀疑自己的configuration被破坏/“中毒”,但我不确定前8步中哪个(如果有的话)确实是必要的:

  1. 备份gcloud和kubectl的现有configuration
    • mv ~/.kube/config ~/.kube/config.old
    • mv ~/.config ~/.config.old
  2. 删除谷歌云SDK
    • rm -rf ~/bin/google-cloud-sdk
  3. 从我的~/.bash_profile中删除在之前的安装过程中使用文本编辑器添加的行(一行设置PATH ,一行允许bash完成)
  4. 下载最新的谷歌云SDK
  5. 解压档案并运行install.sh脚本
  6. 运行gcloud init并按照提供的说明进行操作
    • 我回答“y”的一切(configuration为谷歌容器引擎,修改.bash_profile,并启用bash完成),但最低限度,你应该configuration它用于谷歌容器引擎
  7. gcloud components install kubectl
  8. gcloud容器集群获取凭证

当我运行kubectl version的时候,我得到了一个不同的错误! 这就是我所说的“进步”。 现在它告诉我,“谷歌找不到默认凭据”,并按照此页面上的说明。 简述:

  1. 按照描述创build服务帐户,下载.json项并将其移动到您select的目录
  2. 将GOOGLE_APPLICATION_CREDENTIALS环境variables设置为您下载的密钥的path
  3. 安装gcloud beta组件( gcloud components install beta
  4. 运行gcloud beta auth application-default login

之后, kubectl version再次工作! 希望这也适用于你。