GCloud-无法从Kubernetes Cluster访问Cloud SQL,但可以在本地PC上运行

时间:2018-09-27 07:05:41

标签: java google-cloud-sql google-kubernetes-engine

我想通过JDBC从GCloud Kubernetes Engine中运行的容器连接到我的Cloud SQL数据库(MySQL)。该容器包含带有一些REST服务的Java Spring Boot应用程序。

当我在本地运行Java应用程序时,一切正常,并且该应用程序可以正常连接到Cloud SQL DB。但是,当我将应用程序部署到GCloud时,调用服务器REST API(通过Postman)时,只会得到以下响应:

{
"timestamp": "2018-09-27T06:54:22.987+0000",
"status": 500,
"error": "Internal Server Error",
"message": "Could not open JDBC Connection for transaction; nested exception 
is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications 
link failure\n\nThe last packet sent successfully to the server was 0 
milliseconds ago. The driver has not received any packets from the server.",
"path": "/api/user/getDbs"
}

我已经尝试通过在授权选项卡中添加0.0.0.0/0来允许与数据库的所有连接。 我还尝试添加防火墙规则。两者都没有成功。

感谢您的帮助,我可以得到:)

1 个答案:

答案 0 :(得分:2)

当前建议是使用cloud-sql-proxy运行sidecar容器。这里有一个不错的文章(https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine)。还有一个beta服务经纪人似乎很有希望。您无需使用代理授权或导入证书。但是,请确保提供的服务帐户具有正确的连接权限。之后,您的应用程序可以在localhost:POR上连接

https://cloud.google.com/kubernetes-engine/docs/concepts/google-cloud-platform-service-broker