簡體   English   中英

無法從外部機器連接到 Postgres(通過 Kubernetes Helm 安裝)服務,連接被拒絕

[英]Can't connect to Postgres (installed through Kubernetes Helm) service from external machine, connection refused

我剛剛在桌面上安裝了帶有 minkube 的 Kubernetes(運行 Ubuntu 18.10),然后嘗試使用 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   

任何人有幫助嗎? 我迷路了。

您需要配置postgresql.conf以允許外部客戶端連接查找listen參數並將其設置為* ,它位於您的 postgres 數據目錄下,然后在pg_hba.conf添加您的筆記本電腦的 ip。 它控制客戶端對您的 postgresql 服務器的訪問,更多關於這里 - https://www.postgresql.org/docs/9.3/auth-pg-hba-conf.html

就我而言,解決方案是對網絡有更深入的了解。

為了清楚起見,我們將安裝 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 port-forward --address "192.100.200.300" --namespace default svc/wise-beetle-postgresql 5000:5432 &

所以現在,如果您在以下位置調用服務: 192.100.200.300:5000 : 192.100.200.300:5000 ,它將被轉發到運行 minikube 的機器上的端口 5432,然后您的 postgres 實例將收到 5432。

希望這能解開或澄清其他人可能遇到的這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM