在远程集群中将本地TCP服务器公开为kubernetes服务。
krok的Python项目详细描述
克朗
与ngrok中的一样
在远程集群中将本地TCP服务器公开为kubernetes服务。
用法
假设我们想在端口service_port
上创建名为service_name
的服务,将所有流量从该端口转发到local_host
(通常为127.0.0.1)和local_port
。
安装krok客户端:
pip install krok
安装krok服务器:
kubectl -n <namespace> run --image=smpio/krok-server krok
运行krok:
krok -n <namespace> -l <local_host> -p <local_port> <service_name> <service_port>
注意:local_host
可以是任何可以从您的计算机访问的主机,但通常127.0.0.1
是最有用的。
工作原理
我们在pod中运行krok服务器。服务器是简单的openssh服务器,允许转发传入连接。
krok客户端是一个简单的脚本,可以自动执行以下步骤:
运行
kubectl port-forward <krok_pod> :22
。它将随机监听转发到krok的openssh服务器的所有连接。运行
ssh -N -R *:0:<local_host>:<local_port> -p <local_ssh_port> krok@localhost
。这导致krok在krok_pod
上的openssh服务器使用ssh隧道随机监听pod_port
将所有连接转发到local_host:local_port
。使用端口
service_port
和目标端口pod_port
创建或更新服务service_name
,选择器匹配krok_pod
。
结果,到service_name:service_port
的所有连接都将转发到krok_pod
,然后通过kubectl port-forward
转发的ssh隧道转发到本地计算机,然后由ssh客户端转发到local_host:local_port
。