我正在尝试从部署在minishift中的springboot应用程序连接到postgres数据库。
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外部的数据库?
发布于 2017-03-02 03:16:55
除了我的评论中提到的答案之外,建议让你的数据库监听Docker桥的IP地址,你可以让你的pod使用你主机的网络堆栈。这样,您就可以在环回上到达Postgres。仅当可以保证pod始终在与数据库相同的主机上运行时,此方法才有效。
Kubernetes文档discourages using hostNetwork。如果您了解其后果,则可以像在this example中一样启用它。
发布于 2017-03-02 17:50:15
如果kubernetes中的pod不能从主机看到IP地址,那么我猜这是一个底层的防火墙或网络问题。试着打开吊舱内的一个外壳。
kubectl exec -it mypodname bash然后尝试ping、telnet、curl、wget或其他命令,看看是否能看到IP地址。
听起来你的迷你飞船的网络设置出了问题。可能值得提出一个关于minishift的问题:https://github.com/minishift/minishift/issues/new
如果您可以在主机上找到可从docker pod访问的IP地址,则可以创建Kubernetes service,然后使用主机上数据库的IP地址为服务创建Endpoint;然后,您可以使用kubernetes服务的常规DNS发现(即使用服务名称作为DNS名称),然后将其解析为IP地址。随着时间的推移,您可能会有多个IP地址用于故障转移等。
请参阅:https://kubernetes.io/docs/user-guide/services/#without-selectors
然后,如果端点是在kubernetes内部实现的,那么您可以使用服务与所有实际的网络端点进行对话,并且您的应用程序代码完全解耦,而在外部实现负载平衡!
https://stackoverflow.com/questions/42526333
复制相似问题