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

Kubernetes 错误:无法';无法从服务器读取版本,kubernetes,Kubernetes,尝试在本地运行kubectl时出现以下错误 错误:无法从服务器读取版本:Gethttp://localhost:8080/api: 拨打tcp 127.0.0.1:8080:连接被拒绝 我知道这与kubectl配置有关,但我不知道如何解决它。2天前,我在试验GKE,并将配置设置为指向GCE。我尝试删除此配置文件,然后获取。这个vagrant up抛出一个类似的错误,抱怨无法连接 插入kubectl的合适方法是什么,以便它可以连接到API并返回信息?tl;drgcloud容器获取凭据--clust

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

错误:无法从服务器读取版本:Gethttp://localhost:8080/api: 拨打tcp 127.0.0.1:8080:连接被拒绝

我知道这与kubectl配置有关,但我不知道如何解决它。2天前,我在试验GKE,并将配置设置为指向GCE。我尝试删除此配置文件,然后获取。这个
vagrant up
抛出一个类似的错误,抱怨无法连接


插入kubectl的合适方法是什么,以便它可以连接到API并返回信息?

tl;dr
gcloud容器获取凭据--cluster=cluster\u ID--zone=YOURZONE


所以有一点背景:kubectl工具是由google开发的,但实际上并没有直接集成到google cloud中,google cloud只是在您告诉它安装组件时帮助您获得与之兼容的版本

如果您正在获取
Gethttp://localhost:8080/api: 拨打tcp 127.0.0.1:8080:连接被拒绝
可能是因为根本没有配置或配置错误的
kubectl
工具。我认为它试图做的是假设你只在本地设置了kubernetes,而在本例中你没有这样做,因为它都在google云上(因此出现了一个神秘的错误)

您可以通过运行
kubectl config view
来验证您的kubectl配置错误。如果配置正确,您应该在集群中看到一些条目,带有ip地址,在用户中,您应该看到每个项目的一个用户,等等。如果您没有看到任何此类条目(即空集群和空用户),则说明您配置错误;如果您没有看到您试图处理的特定集群的条目,您也会遇到一些隐秘的问题

令人恼火的是,许多
gcloud
命令会自动为您配置,因此如果您遵循类似hello wordpress教程的内容,看起来您不必这样做,而且kubectl会以某种方式与gcloud通信,但不会发生类似的情况。它也很容易失去这种配置

要让gcloud为您提供kubectl配置,请运行以下命令:

gcloud container get-credentials --cluster=CLUSTER_ID --zone=YOURZONE
对于群集id,请运行
gcloud容器群集列表


区域是“europe-west1-d”或您选择的任何区域。

这曾经是
beta
,但现在不再是这种情况。现在的命令是:

gcloud container clusters get-credentials <cluster-name> --zone=<zone-of-cluster> --project=<project-id>    
例如:

kubectl config use-context gke_my-project_europe-west1-c_my-cluster
要查看您当前的位置,请执行以下操作:

kubectl config current-context

干杯

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

gcloud container clusters get-credentials <cluster-name> \
    [--zone=<zone-of-cluster> --project=<project-id>]
gcloud容器群集获取凭据\
[--zone=--project=]

我使用的是谷歌容器引擎(GKE),也出现了这个错误。在我的例子中,这是因为我忘了先创建容器集群

如果需要,它将为您设置配置

gcloud container clusters create my-cluster-name

这是在不断变化,只是参考。现在是

gcloud container clusters get-credentials NAME [--zone ZONE, -z ZONE] [GLOBAL-FLAG …]

我在Ubuntu Trusty上使用默认配置在本地部署时也遇到了这个错误。结果表明,api服务器没有启动,因为存在一些错误
DenyEscalatingExec
k8sv1.1.7版中的ubuntu特有

在执行
kube up.sh
之前,我通过从文件
~/kubernetes-1.1.7/cluster/ubuntu/config default.sh中删除指令重建了没有它的集群

# Admission Controllers to invoke prior to persisting objects in cluster
export ADMISSION_CONTROL=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,DenyEscalatingExec,SecurityContextDeny
DenyEscalatingExec需要从该行中删除,因此,在启动集群后,它不会成为
/etc/default/kube apiserver
中的标志


免责声明:我不确定DenyEscalatingExec做什么,我只是发现这对我解决这个特殊问题很有效。

这很有帮助,谢谢。我确实在当地建立了kubernetes,并一直试图通过使用vagrant来更多地利用它。如果我有一个节点运行api服务器、控制管理器和调度程序的流浪集群,我如何配置
kubectl
来识别它?这是我的
kubectl配置视图的一部分
-群集:服务器:“”名称:漫游上下文:。这在评论中没有很好的体现,但没有任何细节,只有我给它起的“流浪者”的名字。请参见,但这不是最初的问题为什么
kubectl
无法连接到本地流浪者集群?不再需要
gcloug beta容器中的
beta
。不过,
beta
组件仍然可用。此外,
视图
已成为
列表
,如
gcloud config list
中所示。
# Admission Controllers to invoke prior to persisting objects in cluster
export ADMISSION_CONTROL=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,DenyEscalatingExec,SecurityContextDeny