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