是否有与kubectl
相对应的命令,以执行以下操作:
ssh -L8888:rds.aws.com:5432 example.com
kubectl
工具中有 port-forward
命令,你可以使用 --address
选项指定需要绑定的 IP 地址。
注意,--address
只接受 IP 地址参数。
是否有与kubectl
相对应的命令,以执行以下操作:
ssh -L8888:rds.aws.com:5432 example.com
kubectl
工具中有 port-forward
命令,你可以使用 --address
选项指定需要绑定的 IP 地址。
注意,--address
只接受 IP 地址参数。
旧答案仍然有效。 不过,一种解决方法是使用类似https://hub.docker.com/r/marcnuri/port-forward这样的东西。
kubectl run --env REMOTE_HOST=your.service.com --env REMOTE_PORT=8080 --env LOCAL_PORT=8080 --port 8080 --image marcnuri/port-forward test-port-forward
在集群上运行它,然后进行端口转发。
kubectl port-forward test-port-forward 8080:8080
In OpenSSH, local port forwarding is configured using the
-L
option:ssh -L 80:intra.example.com:80 gw.example.com
This example opens a connection to the
gw.example.com
jump server, and forwards any connection to port 80 on the local machine to port 80 onintra.example.com
.By default, anyone (even on different machines) can connect to the specified port on the SSH client machine. However, this can be restricted to programs on the same host by supplying a bind address:
ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
您可以在此处阅读文档。
Kubernetes
中的端口转发
仅适用于集群内部,您可以将命中指定端口的流量转发到Deployment
或Service
或Pod
。
kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]
--address
标志用于指定监听什么地址,0.0.0.0
表示监听所有地址,而 localhost
是主机名,你可以设置一个 IP 地址来进行监听。相关文档请参见此处,你也可以阅读使用端口转发访问集群中的应用程序。
如果您在互联网上有一台SSH服务器,则可以使用一个解决方法:从您的Pod SSH到您的服务器,并进行反向端口转发:
# Suppose a web console is being served at
# http://my-service-8f6717ab-e.default:8888/
# inside your cluster:
kubectl exec -it my-job-f523b248-7htj6 -- ssh -R8888:my-service-8f6717ab-e.default:8888 user@34.23.1.2
然后,您可以从Kubernetes外部连接到其中的服务。如果SSH服务器不在您的本地计算机上,则可以使用常规端口转发从本地计算机向其进行SSH连接:
me@my-macbook-pro:$ ssh -L8888:localhost:8888 user@34.23.1.2
然后将浏览器指向 http://localhost:8888/