无法连接到Google Cloud中的SQL

时间:2019-07-17 12:01:55

标签: sql kubernetes google-cloud-platform

我无法在GCP中连接到Cloud SQL, 我的spring boot应用程序托管在Google Kubernetes中, 我可以将我的应用程序从本地连接到数据库 但是当我在kubernetes中部署我的应用程序映像时它不起作用 我检查了日志并得到了

{
insertId:  "s=5ae000c9c858402ba514b2f9a2a7d34d;i=557f;    b=fef2848a05ed422b811cda756eea59d6;m=2a5164d50;t=58dde1640752b;  x=4a97c620c9fbf136-0@aa"  
logName:  "projects/finomatic  /logs/cloudsql.googleapis.com%2Fmysql.err"  
receiveTimestamp:  "2019-07-17T10:38:04.977705316Z"  
resource: {…}  
severity:  "INFO"  
textPayload:  "2019-07-17T10:37:59.135897Z 1340 [Note] Aborted  connection 1340 to db: 'finomatic' user: 'root' host: '  cloudsqlproxy~129.41.84.82' (Got an error reading communication packets)"  
timestamp:  "2019-07-17T10:37:59.136950Z"  
}

所以我在“ SQL连接”选项卡中添加了群集IP,但仍然收到此错误 当我预览我的应用程序Docker映像时,我的API正常 部署api后无法正常工作 在deploymenet后收到此错误 Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection

1 个答案:

答案 0 :(得分:0)

尽管您已在Cloud SQL中将客户端IP列入白名单,GKE has masquerading active意味着所有出站Internet连接都将被NAT到该节点的外部地址。

  

ip-masq-agent配置iptables规则,以在将流量发送到节点和群集IP范围之外的目的地时处理伪装的节点/ Pod IP地址。 Pod IP地址被屏蔽在其节点地址的后面。

还有GKE的couple of ways to connect to Cloud SQL。我认为,最直接的方法是在您的广告连播中使用Cloud SQL Proxy deployed as a sidecar container

如果不能选择代理,则可以调整IP masquerade agent以绕过此SNAT规则并保留请求的源IP。