【问题标题】:Access OpenShift forwarded ports from remote host从远程主机访问 OpenShift 转发端口
【发布时间】:2019-03-07 13:11:35
【问题描述】:

我想使用here 所述的端口转发连接到在 OpenShift (3.9) 内运行的 PostgreSQL (9.6) 集群。为此,我在跳转主机(OpenShift 集群外部)上设置并检查端口转发,如下所示:

oc port-forward $pod 5432:5432
netstat -ln | grep 5432 # "tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN"
psql -U postgres -h localhost # OK
psql -U postgres -h $(hostname -i) # error: "connection refused"

所以看起来端口转发只监听localhost,而不是主机的其他IP地址。最终我想通过跳转主机从另一个远程主机连接到数据库,所以 'localhost' 是不够的。

如何设置 (OpenShift) 端口转发,使其也允许从远程主机访问转发的端口?我想 Iptables(结合 OpenShift 端口转发)可以解决问题,但我还不知道如何以及是否有更简单的方法。 (跳转主机运行Debian 9.5。)

更新 结合 SSH 隧道和 OpenShift (Kubernetes) 端口转发的方法显然可以解决这个问题。这是在下面接受的答案中提供的链接中建议的。

在跳转主机上(第一次会议):

ssh -N -L $(hostname -i):5432:localhost:5433 $(whoami)@$(hostname)

在跳转主机上(第二次会议):

oc port-forward $pod 5433:5432

在远程主机上:

psql -U postgres -h jump-host

【问题讨论】:

    标签: postgresql openshift iptables portforwarding


    【解决方案1】:

    您可以在https://github.com/kubernetes/kubernetes/issues/43962https://github.com/kubernetes/kubernetes/pull/46517 上找到关于端口转发侦听地址和一些临时解决方案的不错讨论。

    PR 合并后,在上游 kubernetes 和 openshift 更新到该版本后,您将有一个简单的方法来实现这一点(我猜从现在起至少半年)。目前,您只能使用变通方法。

    【讨论】:

    • 好东西:Kubernetes #43962 中建议的解决方法(使用 SSH 隧道而不是 Iptables)显然解决了我的问题。我将在此问题的更新中分享详细信息。
    【解决方案2】:

    我个人认为port-forward 只允许本地访问[0],所以没有比你说的更简单的方法了。即使可以启用远程访问,但您应该配置iptables 以允许node 上的5432 端口。所以如果你想从远程访问Pod,你应该使用Pods之间的RouteService之类的通信。

    [0]Port Forwarding

    You can use the CLI to forward one or more local ports to a pod. This allows you to listen on a given or random port locally, and have data forwarded to and from given ports in the pod.
    

    【讨论】:

    • 路由只能用于 HTTP 流量,除非您要使用的协议支持使用 TLS SNI 的安全连接和隧道,而 OpenShift 使用的 PostgreSQL 映像不支持。如果能够为集群设置 NodePort 或 LoadBalancer 类型的服务,您只能直接公开服务。 kubernetes.io/docs/concepts/services-networking/service/…
    • 你说得对,格雷厄姆。感谢您的指正。我将编辑上述与Route相关的评论。
    • @GrahamDumpleton 仅供参考,我使用的不是 OpenShift 的 PostgreSQL 映像,而是基于 Debian Stretch 并安装 PostgreSQL 9.6 的自己的映像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多