考虑一下,如果我们通过网络在裸机服务器中构建两个VM,一个是 master ,另一个是 worker 。我向主服务器ssh
kubeadm
构造一个集群,该集群包含三个Pod和一个type: ClusterIP
的服务。因此,当我要访问群集时,我在主服务器中执行kubectl proxy
。现在,我们可以在curl
的VM中使用wget
和ssh
探索API,如下所示:
$ curl http://localhost:8080/api/
到目前为止,太好了!但是我想通过笔记本电脑访问这些服务吗?上面的localhost是指裸机服务器!将群集放置在另一台计算机上时,笔记本电脑如何通过代理访问服务?
当我在笔记本电脑上进行$ curl http://localhost:8080/api/
时,它说:
127.0.0.1 refused to connect
有道理!但是对此有什么解决方案?
答案 0 :(得分:2)
如果在将端口切换为master时转发端口8080,则可以在笔记本电脑上使用localhost来访问群集上的api。
您可以尝试在-L
命令中添加ssh
标志:
$ ssh -L 8080:localhost:8080 your.master.host.com
然后curl
至localhost
将起作用。
答案 1 :(得分:2)
您还可以为kubectl proxy
命令指定一个额外的参数,以使您的反向代理服务器侦听非默认ip地址(127.0.0.1)-暴露在外部
kubectl proxy --port=8001 --address='<MASTER_IP_ADDRESS>' --accept-hosts="^.*$"
您可以通过发出以下命令来获取您的主IP地址:kubectl cluster-info