[英]Can't access Prometheus Postgres exporter installed in kubernetes: connection refused
[英]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.