Postgresql Can';t从外部机器连接到Postgres(通过Kubernetes Helm安装)服务,连接被拒绝

Postgresql Can';t从外部机器连接到Postgres(通过Kubernetes Helm安装)服务,连接被拒绝,postgresql,kubernetes,kubernetes-helm,Postgresql,Kubernetes,Kubernetes Helm,我刚刚在我的桌面上安装了Kubernetes和minkube(运行Ubuntu18.10),然后尝试使用Helm在桌面机器上安装Postgresql 安装头盔后,我做了: helm install stable/postgresql 成功完成后,我将postgres端口转发到: kubectl port-forward --namespace default svc/wise-beetle-postgresql 5432:5432 & 然后,我测试了通过以下方式从桌面本地连接到它:

我刚刚在我的桌面上安装了Kubernetes和minkube(运行Ubuntu18.10),然后尝试使用Helm在桌面机器上安装Postgresql

安装头盔后,我做了:

helm install stable/postgresql
成功完成后,我将postgres端口转发到:

kubectl port-forward --namespace default svc/wise-beetle-postgresql 5432:5432 &
然后,我测试了通过以下方式从桌面本地连接到它: psql——主机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   

有人帮忙吗?我迷路了。

您需要配置
postgresql.conf
以允许外部客户端连接查找
listen
参数并将其设置为
*
,它位于您的postgres数据目录下,然后将笔记本电脑的ip添加到
pg_hba.conf
中。它控制客户端对postgresql server的访问,这里有更多介绍-

在我的例子中,解决方案是对网络有一点更深入的理解

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

问题是minikube在虚拟机中运行,它有自己的IP地址。它不仅仅使用运行它的机器的IP。Minikube的IP与IP不同 在其上运行的机器的。要查找minikube的IP,请运行:
minikube IP
。我们把这个IP称为$MINIKUBE\u IP

然后我必须设置端口转发,如:

kubectl端口转发--地址“192.100.200.300”--命名空间默认svc/wise BELLET postgresql 5000:5432&

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


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

为了进一步调试,我也通过helm安装了mysql,这也给了我同样的问题。我无法从笔记本电脑访问mysql。看起来我无法从外部机器访问任何Kubernetes服务。围绕这一点进行搜索似乎是一个已知的问题:但解决方案尚不清楚。不确定如何使用命令:iptables-P FORWARD ACCEPT。在我的kubernetes机器上运行这个命令并没有解决任何问题。你找到答案了吗?我遇到了同样的问题,因为我不知道如何使用Helm chart values.yaml文件修改PGSQL配置。@MikeStoddart您在使用minikube吗?不,kubectl+k3s+k3d。@MikeStoddart我已经发布了解决问题的方法。查看我刚刚发布的解决方案。