当您在使用kubectl时遇到“拒绝连接到服务器[IP]:[PORT]”的错误时,您可以采取以下对策

简而言之

    1. 如果在kubectl get pods中返回了上述错误,请检查连接目标是否设置错误。

 

    1. 连接目标可以通过kubectl config view的clusters > cluster > server进行确认。

 

    可以通过kubectl config set-cluster [cluster-name] –server=https://[IP]:[PORT]进行连接目标的修改。

发生的事件

我之前在本地使用docker-for-mac运行Kubernetes,但是突然发现在运行kubectl get nodes命令时出现了以下错误。

$ kubectl get nodes
The connection to the server localhost:6443 was refused - did you specify the right host or port?

另外,即使使用kubectl describe nodes命令,也无法连接到服务器,返回了错误信息,原因不清楚。

$ kubectl describe nodes
Unable to connect to the server: EOF

原因 – reason, cause

配置文件中指定的集群连接目标错误。

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    server: https://localhost:6443
  name: docker-for-desktop-cluster

似乎在某个时间点将 localhost 进行了修改。

解决方案

我们将通过以下方式解决。

    1. 调查应连接的IP地址和端口号

 

    修改配置

调查应连接的IP地址和端口号。

幸运的是,由于是本地环境,我们可以获取正在运行的Docker容器的信息。首先,确保Kubernetes的系统容器可见。这个操作可以在图形用户界面上完成。

スクリーンショット 2019-04-29 0.48.22.png

请勾选最底部的显示系统容器(高级)选项。

接下来,我们将寻找Docker正在监听的端口。这次我们将使用docker ps –no-trunc命令来执行并通过检查容器的COMMAND字段来确认。一旦执行,将输出大量的文本,我们需要从中找到目标kube-apiserver命令的参数–advertise-address。

$ docker ps --no-trunc | grep 'advertise-address='
(lots of texts)

由于很难直接发现,我认为利用搜索功能在输出结果中找到会更容易。请搜索以下字符串,并找到等号右侧的字符(IP地址和端口号)根据不同环境可能会有所不同。

--advertise-address=192.168.65.3 
--secure-port=6443

更改配置文件

使用下列命令进行替换。

$ kubectl config set-cluster docker-for-desktop-cluster \
--server=https://[IPADDR]:[PORT]

在Docker for Desktop集群中输入您希望使用的集群名称。请使用之前查询到的值替换[IP地址]和[端口号]。

确认

可以使用kubectl get pods来确认。可能会返回以下类似的消息。

$ kubectl get pods
No resources found.

这只是因为还没有任何pod,所以是正常的。如果设置不正确,你会收到前面的错误信息,或者即使等待再长时间也不会收到任何东西。

请阅读以下内容参考中国的翻译。

    • The connection to the server :6443 was refused – did you specify the right host or port? – General Discussions – Discuss Kubernetes

 

    • 【kubectl】The connection to the server localhost:8080 was refused と叱られる – DRYな備忘録

 

    • Hello Minikube – Kubernetes

 

    • Running Kubernetes Locally via Docker – kubectl get nodes returns The connection to the server localhost:8080 was refused – did you specify the right host or port? · Issue #23726 · kubernetes/kubernetes

 

    • Kubernetes “did you specify the right host or port?” – Qiita

 

    • “Kubernetes is starting…” state never ends · Issue #2990 · docker/for-mac

 

    • Kubernetes does not complete startup, “Kubernetes is starting” · Issue #1649 · docker/for-win

 

    Docker for MacでKubernetes インストールからデプロイまで – Qiita
广告
将在 10 秒后关闭
bannerAds