如何将流量从远程Kubernetes pod转发到本地机器上运行的服务器?目的是测试远程服务器调用本地机器上运行的服务。我已经使用kubectl port-forward
将流量从本地服务转发到远程服务,但我需要反过来做。
This solution用于minikube,用于在本地运行Kubernetes,所以这可能不适用于我。
如何将流量从远程Kubernetes pod转发到本地机器上运行的服务器?目的是测试远程服务器调用本地机器上运行的服务。我已经使用kubectl port-forward
将流量从本地服务转发到远程服务,但我需要反过来做。
This solution用于minikube,用于在本地运行Kubernetes,所以这可能不适用于我。
4条答案
按热度按时间vfh0ocws1#
可能有一个“更多K8”的方法,但如果你找不到更好的方法,这里有一个想法-使用ssh。
具体地说,在pod上设置并公开SSH,这样就可以从本地机器访问它,然后在机器上使用ssh创建一个远程ssh隧道。
例如,
ssh -R 8080:localhost:80 <exposed-pod-ssh>
将pod的localhost:8080转发到本地机器端口80。5hcedyr02#
这是一个非常烦人的任务。
如果手头没有什么特别的东西,你需要从你的调制解调器重定向一个端口到你的机器。大多数人都有不固定的公共ip,所以你需要找到你的公共ip地址(你不能搜索“什么是我的ip”),并希望它不会在你的测试之间改变。有了你的公共ip地址,你可以尝试直接从pod访问,例如:
字符串
有些集群不会让pod从自己的集群中出去,所以,最好创建一个没有选择器的service,然后添加一个指向你的ip的endpoint:
型
然后添加endpoint:
型
现在,如果你在同一个命名空间中,你可以这样做:
型
一个更好、更简单的解决方案是使用vagrant share,https://www.vagrantup.com/docs/share,但你需要一些步骤:
1.安装虚拟机管理程序(VirtualBox、Libvirt、HyperV、VMWare)
1.安装Vagrant
1.在https://app.vagrantup.com上创建和帐户
1.启动机器并使用vagrant share
1.抓取命令返回时显示的URL并在pod/service上使用,端口始终为80
范例:
型
jucafojl3#
您可以使用网状VPN来实现这一点。类似于https://tailscale.com/
b4wnujal4#
这不是一种“k8s”的方式,但我在pod内部使用了nc来查看从pod发送到远程服务的http请求。
为此,
nc -l -p 9091
一旦触发Pod向远程服务发送请求,NC将打印该请求