【问题标题】:Openshift: Expose postgresql remotelyOpenshift:远程公开 postgresql
【发布时间】:2018-12-11 09:51:51
【问题描述】:

我已经在我的 openshift origin v3 中创建了一个 postgresql 实例。它运行正常,但我不太明白为什么我无法远程访问它。

我已经暴露了一条路线:

$oc get routes
postgresql   postgresql-ra-sec.192.168.99.100.nip.io             postgresql   postgresql                 None

$ oc get services
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
postgresql   ClusterIP   172.30.59.113   <none>        5432/TCP   57m

这是我的路线:

我正在尝试从 ubuntu 操作系统访问此实例。我正在尝试使用psql

$ psql --host=postgresql-ra-sec.192.168.99.100.nip.io --dbname=tdevhub
psql: could not connect to server: Connection refused
Is the server running on host "postgresql-ra-sec.192.168.99.100.nip.io" (192.168.99.100) and accepting
TCP/IP connections on port 5432?

否则:

$ psql --host=postgresql-ra-sec.192.168.99.100.nip.io --port=80 --dbname=tdevhub
psql: received invalid response to SSL negotiation: H

我检查了 dns 解析,它似乎工作正常:

$ nslookup postgresql-ra-sec.192.168.99.100.nip.io                    
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   postgresql-ra-sec.192.168.99.100.nip.io
Address: 192.168.99.100

编辑

这个怎么样?

为什么会有这种重定向?可以在port-forwarding之前改一下吗?

【问题讨论】:

    标签: postgresql openshift openshift-origin


    【解决方案1】:

    通过路由公开服务意味着您启用外部 HTTP 流量。对于像 Postgresql 这样的服务,这不会按照您的示例工作。

    另一种方法是将端口转发到您的本地计算机并以这种方式连接。例如,运行oc get pods,然后运行oc port-forward &lt;postgresql-pod-name&gt; 5432,这将允许您创建 TCP 连接:

    在主机上运行psql --host=localhost --dbname=tdevhub 来验证这一点。

    还有一个选项,在某些情况下至少分配外部 IP 以允许入口流量。 See the OpenShift docs。这将更复杂,但与端口转发相反,这是一个永久的解决方案。看起来您正在运行 oc cluster upminishift 但是所以不确定这是多么可行。

    【讨论】:

    • 根据您的编辑:在端口转发之前无需更改任何内容。您实际上可以删除路由,因为在这种情况下它基本上没用。
    • 一些相关信息:openshift.com/blog/…
    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2015-09-02
    • 1970-01-01
    相关资源
    最近更新 更多