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

时间:2018-12-10 09:49:33

标签: kubernetes kubectl kubeadm

考虑一下,如果我们通过网络在裸机服务器中构建两个VM,一个是 master ,另一个是 worker 。我向主服务器ssh kubeadm构造一个集群,该集群包含三个Pod和一个type: ClusterIP的服务。因此,当我要访问群集时,我在主服务器中执行kubectl proxy。现在,我们可以在curl的VM中使用wgetssh探索API,如下所示:

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

到目前为止,太好了!但是我想通过笔记本电脑访问这些服务吗?上面的localhost是指裸机服务器!将群集放置在另一台计算机上时,笔记本电脑如何通过代理访问服务?

当我在笔记本电脑上进行$ curl http://localhost:8080/api/时,它说:  127.0.0.1 refused to connect 有道理!但是对此有什么解决方案?

2 个答案:

答案 0 :(得分:2)

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

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

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

然后curllocalhost将起作用。

答案 1 :(得分:2)

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

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

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