我刚刚在台式机上(运行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
有人帮助吗?我迷路了。
答案 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。
希望这可以解决或澄清其他人可能遇到的问题。