2017-03-01 84 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执行应用程序代码完全解耦上,外面带有负载均衡烘烤!