考虑一下,如果我们通过网络在裸机服务器中构建两个VM,一个是master,另一个是worker。我ssh
到master并使用kubeadm
构建一个集群,它有三个pod和一个类型的服务:ClusterIP
。所以当我想访问集群时,我在master中执行kubectl proxy
。现在我们可以在我们ssh
到它的VM中探索curl
和wget
的API,如下所示:
$ curl http://localhost:8080/api/
到目前为止,一切都很好!但是我想通过我的笔记本电脑访问服务?上面的localhost是指裸机服务器!当集群放置在另一台机器上时,如何通过我的笔记本电脑代理访问服务?
当我在笔记本电脑上做$curlhttp://localhost:8080/api/
时,它会说:127.0.0.1拒绝连接
这是有道理的!但是解决这个问题的方法是什么?
如果在sshing到master时转发端口8080,则可以使用笔记本电脑上的localhost访问集群上的api。
您可以尝试将-L
标志添加到您的ssh
命令中:
$ssh-L 8080:localhost:8080your.master.host.com
然后curl
到localhost
将起作用。
您还可以为kubectl proxy
命令指定一个额外的参数,让您的反向代理服务器侦听非默认IP地址(127.0.0.1)-暴露在外部
kubectl proxy --port=8001 --address='<MASTER_IP_ADDRESS>' --accept-hosts="^.*$"
您可以通过发出以下命令来获取您的主IP地址: