如何将Kubernetes集群的端口转发信息反向到本地主机

46次阅读
没有评论

问题描述

想要将Kubernetes pod的端口转发信息从192.168.49.2:30085反向到本地主机的localhost:8000,但遇到了问题。他希望在本地主机的localhost:8000上获得与curl 192.168.49.2:30085相同的响应。
用户尝试使用ktunnel命令ktunnel expose <service_name> 30085:8000来转发信息,但是得到了以下输出:

INFO[0000] Exposed service's cluster ip is: 10.101.77.99.
INFO[0000] waiting for deployment to be ready.....
INFO[0001] port forwarding to https://192.168.49.2:8443/api/v1/namespaces/default/pods/thisisatest-59d5584c84-b5qrc/portforward
INFO[0001] Waiting for port forward to finish
INFO[0001] Forwarding from 127.0.0.1:28688 -> 28688
INFO[2022-08-03 20:23:48.605] starting tcp tunnel from source 30085 to target 8000

在本地主机的localhost:8000上使用curl http://10.101.77.99:30085可以得到响应,但不是正确的响应。
用户还尝试使用以下命令运行一个TCP服务器:

nc 127.0.0.1 8000 | kubectl exec -i <pod_name> tcpserver 127.0.0.1 30085 cat

但结果不理想。用户想知道是否使用这些服务的方式不正确,或者是否有更好的方法来实现这个目标。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

如果你可以访问kubectl,可以尝试使用以下命令:

kubectl port-forward service/<servicename> 8000:30085

这将在本地主机的localhost:8000上创建一个端口转发,将Kubernetes服务的端口30085转发到本地主机的端口8000。你可以使用curl http://localhost:8000来测试是否能够获得正确的响应。

方案2

另一种方法是使用SSH进行反向端口转发。你可以在pod上暴露SSH,并使用SSH进行反向端口转发。以下是一些步骤:
1. 在pod上安装和配置SSH服务器。
2. 在本地主机上使用SSH进行反向端口转发。
3. 在本地主机上测试端口转发是否正常工作。

请注意,这种方法需要在pod上安装和配置SSH服务器,并且需要在本地主机上具有SSH客户端。

方案3

你还可以尝试使用一些网格VPN工具,如Tailscale,来实现Kubernetes集群和本地主机之间的连接和通信。这些工具可以帮助你建立安全的网络连接,并简化端口转发的设置和管理。

以上是几种可能的解决方案,你可以根据自己的需求和环境选择适合的方法来实现将Kubernetes集群的端口转发信息反向到本地主机的目标。

正文完