配置 kubectl 连接远程集群

6
我按照Kubernetes文档上的步骤在Docker容器中设置了单节点集群。现在,我已经在远程Linux VM(例如mykube01.example.com)上运行了Kubernetes。
然后,我在我的Mac笔记本电脑上下载并安装了kubectl。我可以运行kubectl version并验证我已安装正确的版本。
接着,我按照这个文档的说明进行了kubectl的配置,并创建了以下~/.kube/config文件:
 apiVersion: v1
 clusters:
 - cluster:
      api-version: v1
      server: http://mykube01.example.com:8080
      name: testkube

当我运行kubectl cluster-info时,我得到:
Kubernetes master is running at http://mykuber01.example.com:8080

但是当我运行kubectl get nodes时,我得到:

The connection to the server mykube01.example.com:8080 was refused - did you specify the right host or port?

你有什么想法我做错了什么?我想要达到的目标是能够继续阅读第一篇Kubernetes文档并通过以下方式将nginx部署到单节点集群:

kubectl -s http://mykube01.example.com:8080 run-container nginx --image=nginx --port=80

但在我正确配置并正确连接到我的远程“集群”之前,我无法这样做。


你的 Linux 机器上的 apiserver 是否在监听所有网络接口?如果你的 Mac 连接被拒绝,那可能是因为它没有在可远程访问的接口上进行监听。 - Robert Bailey
为确保API服务器正常运行,您可以尝试从您的笔记本电脑使用curl http://mykube01.example.com:8080/api/v1/nodes/(或从浏览器)访问。 - Sreekanth Pothanis
2个回答

2

当您创建与主服务器的连接时,应该会创建一个文件:

/etc/kubernetes/kubelet.conf

默认情况下,您的个人配置为空或缺失。因此,我将上述提到的kubelet.conf文件复制为我的~/.kube/config文件。这样做非常完美。


1
将“回复”移到“答案”中,使其显示为“已回答”。
kubectl默认使用HTTP(S)。正如上面的人所说,尝试使用“curl mykube01.example.com:8080/api/v1/nodes”或在浏览器中打开该URL,看看是否有效。
如果这样做有效,但kubectl不起作用,则kubectl或您的配置存在问题。如果curl或浏览器无法工作,则问题出现在网络中的某个地方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接