提问者:小点点

当ssh通过代理到另一个VM时,如何访问kubernetes集群中的服务?


考虑一下,如果我们通过网络在裸机服务器中构建两个VM,一个是master,另一个是worker。我ssh到master并使用kubeadm构建一个集群,它有三个pod和一个类型的服务:ClusterIP。所以当我想访问集群时,我在master中执行kubectl proxy。现在我们可以在我们ssh到它的VM中探索curlwget的API,如下所示:

$ curl http://localhost:8080/api/

到目前为止,一切都很好!但是我想通过我的笔记本电脑访问服务?上面的localhost是指裸机服务器!当集群放置在另一台机器上时,如何通过我的笔记本电脑代理访问服务?

当我在笔记本电脑上做$curlhttp://localhost:8080/api/时,它会说:127.0.0.1拒绝连接这是有道理的!但是解决这个问题的方法是什么?


共2个答案

匿名用户

如果在sshing到master时转发端口8080,则可以使用笔记本电脑上的localhost访问集群上的api。

您可以尝试将-L标志添加到您的ssh命令中:

$ssh-L 8080:localhost:8080your.master.host.com

然后curllocalhost将起作用。

匿名用户

您还可以为kubectl proxy命令指定一个额外的参数,让您的反向代理服务器侦听非默认IP地址(127.0.0.1)-暴露在外部

kubectl proxy --port=8001 --address='<MASTER_IP_ADDRESS>' --accept-hosts="^.*$"

您可以通过发出以下命令来获取您的主IP地址: