无法从外部计算机连接到Postgres(通过Kubernetes Helm安装)服务,连接被拒绝

时间:2018-11-11 18:49:25

标签: postgresql kubernetes kubernetes-helm

我刚刚在台式机上(运行Ubuntu 18.10)安装了带有Minkube的Kubernetes,然后尝试使用Helm在台式机上安装Postgresql。

安装头盔后,我做了:

helm install stable/postgresql

成功完成此操作后,我使用以下命令转发了postgres端口:

kubectl port-forward --namespace default svc/wise-beetle-postgresql 5432:5432 &

,然后我测试了如何使用以下命令从桌面本地连接到它:     psql --host 127.0.0.1 -U postgres 会成功。

我尝试从笔记本电脑连接到Postgres,但失败:

psql -h $MY_DESKTOP_LAN_IP -p 5432 -U postgres

psql: could not connect to the server: Connection refused
Is the server running on host $MY_DESKTOP_LAN_IP and accepting TCP/IP connections on port 5432?

为确保我的桌面确实在听5432,我做了:

netstat -natp | grep 5432

(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN               17993/kubectl       
tcp6       0      0 ::1:5432                :::*                    LISTEN      17993/kubectl   

有人帮助吗?我迷路了。

2 个答案:

答案 0 :(得分:1)

您需要配置postgresql.conf以允许外部客户端连接查找listen参数并将其设置为*,该参数位于postgres数据目录下,然后在其中添加便携式计算机的ip。 pg_hba.conf。它控制客户端对您的Postgresql服务器的访问,更多信息在这里-https://www.postgresql.org/docs/9.3/auth-pg-hba-conf.html

答案 1 :(得分:0)

就我而言,解决方案是对网络的更深入了解。

为清楚起见,我们将安装了minikube的机器称为“ A”。 从我的Wifi上的其他计算机可以看到的这台机器的IP可能是:192.100.200.300.1 由于Postgres在端口5432上公开,因此我希望Postgres应该在以下位置可见:192.100.200.300.1:5432。 但是这种理解是错误的,这是导致意外行为的原因。

问题是minikube在VM中运行,并且获得了自己的IP地址。它不只是使用运行它的机器的IP。 Minikube的IP与IP不同 在其上运行的机器。要查找minikube的IP,请运行:minikube ip。我们将此IP称为$ MINIKUBE_IP。

然后我必须像这样设置端口转发:

kubectl port-forward --address "192.100.200.300" --namespace default svc/wise-beetle-postgresql 5000:5432 &

现在,如果您在以下位置调用服务:192.100.200.300:5000,它将被转发到运行minikube的计算机上的端口5432,然后您的postgres实例将收到5432。

希望这可以解决或澄清其他人可能遇到的问题。