错误:无法从服务器读取版本

smu*_*oud 13 kubernetes

尝试在kubectl本地运行时出现以下错误.

error: couldn't read version from server: Get http://localhost:8080/api: dial tcp 127.0.0.1:8080: connection refused

我知道这与kubectl配置有关,但我对如何解决它感到茫然.2天前,我正在尝试使用GKE并确实将配置设置为指向GCE.我尝试删除此配置文件,然后在本地使用CoreOS获取Vagrant.这vagrant up引发了类似的错误,抱怨无法连接.

什么是适当的仪器方法,kubectl以便它可以连接到API并返回信息?

src*_*der 13

TL;博士 gcloud container get-credentials --cluster=CLUSTER_ID --zone=YOURZONE


所以有一点背景:kubectl工具是谷歌开发的,但实际上并没有直接集成到谷歌云中,当你告诉它安装组件时,谷歌云只是帮助你获得兼容的版本.

如果你得到Get http://localhost:8080/api: dial tcp 127.0.0.1:8080: connection refused它可能是由于该kubectl工具根本没有配置或配置错误.我认为它试图做的是假设你只在某种程度上在本地设置kubernetes,在这种情况下你不会,因为它都在谷歌云上(因此神秘的错误).

您可以通过运行来验证您的kubectl配置错误kubectl config view.如果配置正确,您应该看到群集中的一些条目,带有IP地址,在用户中,您应该看到每个项目的用户,等等.如果您没有看到任何排序(即空簇和空用户)然后你的配置错误; 如果您没有看到正在尝试处理的特定群集的条目,您还会遇到神秘的问题.

令人讨厌的是,许多gcloud命令会默默地为你自动配置它,所以如果你按照像hello wordpress教程这样的东西看起来你不必这样做,并且某种程度上kubectl与gcloud进行通信,但没有任何类似的事情发生.丢失该配置也很容易.

要告诉gcloud给你kubectl配置运行以下内容:

gcloud container get-credentials --cluster=CLUSTER_ID --zone=YOURZONE
Run Code Online (Sandbox Code Playgroud)

命令的"beta"部分可能会在将来消失.

对于群集ID运行 gcloud container clusters list

区域是"欧洲西部1-d"或您选择的任何东西.

  • 不再需要gcloug beta容器中的beta。beta组件仍然可用。同样,“视图”已成为“列表”,如“ gcloud配置列表”中一样。 (2认同)

Van*_*hev 9

过去曾经如此beta,但情况已不再如此.所以命令现在是:

gcloud container clusters get-credentials <cluster-name> --zone=<zone-of-cluster> --project=<project-id>    
Run Code Online (Sandbox Code Playgroud)

如果您尝试使用该beta命令运行它,则会收到以下错误消息:

警告:您调用了gcloud beta,但使用当前配置时,将使用Kubernetes Engine v1 API代替v1beta1 API. gcloud beta将在2018年3月底之前默认使用Kubernetes Engine v1beta1 API.

如果您希望在群集之间切换kubectl(仅适用于已经过身份验证的群集),您可以使用:

kubectl config use-context gke_<project-name>_<zone>_<cluster>
Run Code Online (Sandbox Code Playgroud)

例:

kubectl config use-context gke_my-project_europe-west1-c_my-cluster
Run Code Online (Sandbox Code Playgroud)

要查看您目前的位置:

kubectl config current-context
Run Code Online (Sandbox Code Playgroud)

干杯


小智 6

上述解决方案不再有效.您需要执行以下操作:

gcloud container clusters get-credentials <cluster-name> \
    [--zone=<zone-of-cluster> --project=<project-id>]
Run Code Online (Sandbox Code Playgroud)