2017-03-01 81 views
0

我試圖從部署在minishift中的springboot應用程序連接到postgres數據庫。從minishift連接到主機postgres db

postgres服務器正在運行minishift的同一主機上運行。

我已經嘗試設置的Postgres用於偵聽特定的IP地址,並在springboot JDBC連接URL使用相同的地址,但我仍然得到org.postgresql.util.PSQLException: Connection to 172.99.0.1:5432 refused

我使用10.0.2.2

也嘗試

也試過,在/etc/postgresql/9.5/main/postgresql.conf,設置:

listen_addresses = '*' 

我怎樣才能連接到外部minishift數據庫,同一臺主機上運行?

+0

這可以幫助你嗎? http://stackoverflow.com/a/24326540/4716370 –

回答

0

除了在我的評論中引用的答案,它建議讓您的數據庫偵聽Docker橋的IP地址,您可以讓您的Pod使用主機的網絡堆棧。這樣你可以在環回上達到Postgres。這隻有在可以確保Pod始終與數據庫運行在同一主機上時纔有效。

Kubernetes文檔discourages using hostNetwork。如果您瞭解後果,您可以啓用它,如this example

0

如果kubernetes內的pod無法看到來自主機的IP地址,那麼我猜測它是一個潛在的防火牆或網絡問題。嘗試打開弔艙內殼...

kubectl exec -it mypodname bash 

那麼無論嘗試ping,telnet等,捲曲,wget的還是看你是否能看到IP地址。

聽起來你的小衝突的網絡設置有點不對勁。使用minishift可能會引起一個問題:https://github.com/minishift/minishift/issues/new

如果您可以在可從docker pod訪問的主機上找到IP地址,則可以創建Kubernetes服務,然後創建IP地址爲主機上的數據庫;那麼您可以使用通常的kubernetes服務的DNS發現(即使用服務名稱作爲DNS名稱),然後將其解析爲IP地址。隨着時間的推移,你可以有故障轉移等多個IP地址

參見:https://kubernetes.io/docs/user-guide/services/#without-selectors

然後你可以使用服務交談的所有實際網絡端點與如果端點內kubernetes執行應用程序代碼完全解耦上,外面帶有負載均衡烘烤!