当前位置: 首页 > 知识库问答 >
问题:

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

彭嘉赐
2023-03-14

我刚刚在我的桌面上安装了带有minkube的库伯内特斯(运行Ubuntu 18.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   

有人帮忙吗?我迷路了。

共有2个答案

钦永贞
2023-03-14

就我而言,解决方案是对网络有一点更深的理解。

为了清楚起见,我们将安装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_IP。

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

kubectl端口转发--地址"192.100.200.300"--命名空间默认svc/wise-beetle-postgresql 5000:5432

所以现在,如果您在:192.100.200.300:5000html" target="_blank">调用服务,它将被转发到运行mini kube的机器上的端口5432,然后您的postgres实例将接收5432。

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

蓬琦
2023-03-14

您需要配置postgresql。conf要允许外部客户端连接,请查找侦听参数并将其设置为*,它位于postgres数据目录下,然后将笔记本电脑的ip添加到pg_hba中。conf。它控制客户端对postgresql server的访问,更多信息请参见-https://www.postgresql.org/docs/9.3/auth-pg-hba-conf.html

 类似资料:
  • 每次运行Rails4.0服务器时,都会得到这个输出。 我正在运行小牛OS X10.9,所以我不知道这是不是问题所在。我已经试了我能试的一切,但似乎都没有效果。我已经卸载并安装了postgres和pg gem多次了。 这是我的database.yml文件

  • 问题内容: 我正在尝试使用Flask在Raspberry Pi上运行一个简单的Web服务器。当我运行Flask应用程序时,它说: 在http://127.0.0.1:5000/上运行 但是,当我在笔记本电脑的Chrome中输入此地址时, ERR_CONNECTION_REFUSED 我可以在Raspberry Pi的浏览器上打开127.0.0.1:5000。我需要怎么做才能从另一台计算机连接? 问

  • 在我做了和之后,我的postgres遇到了一些问题。我试着卸载postgres并重新安装它,但它并没有那么好用。 这就是我所做的: 现在,在我重新安装homebrew之后,当我使用时,它不显示任何错误消息。 但是我在我的Rails应用程序中运行,它显示: 更新 这对我也管用。

  • 我正在尝试连接两个docker容器,一个是posgresql,另一个是python flask应用程序。两者都链接正确,python应用程序中的所有连接变量都直接取自postgres容器中通过链接公开的连接变量,并且与检查postgresql容器时发现的连接变量相同。当我将psql与连接字符串中的精确参数一起使用时,即: 成功连接到postgres容器中的数据库,因此我知道postgres正在通过

  • 我一直在寻找一个解决办法,但没有找到一个有效的解决办法。 我已经在我的MacBook中使用brew安装了postgres(),并且我目前正在使用brew服务运行它(将postgres显示为正在运行的服务)。但是,当我尝试运行时,我得到以下错误。 PSQL:无法连接到服务器:没有这样的文件或目录是本地运行并接受Unix域套接字“/tmp/.s.pgsql.5432”上的连接的服务器吗? 有人已经解决