我已经在openshift原始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
之前更改它吗?
答案 0 :(得分:2)
通过路由公开服务意味着您启用了外部HTTP通信。对于像Postgresql这样的服务,按照您的示例,这将无法正常工作。
另一种方法是将端口转发到本地计算机并以这种方式连接。因此,例如,先运行oc port-forward <postgresql-pod-name> 5432
,然后运行psql --host=localhost --dbname=tdevhub
,这将允许您创建TCP连接:
在主机上运行oc cluster up
进行验证。
还有一个选项,在某些情况下至少可以分配外部IP以允许入口流量。 See the OpenShift docs。要实现这一点将更加复杂,但是与端口转发相比,这是一个永久性解决方案。您似乎正在运行minishift
或{{1}},但是不确定是否可行。