You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google Kubernetes Engine(GKE)访问Cloud SQL?

GKE Autopilot访问Cloud SQL(PostgreSQL)故障解决方案

核心问题说明

你配置的LoadBalancer外部IP是GKE服务的入站流量IP,GKE Pod主动对外发起连接的源IP并非该地址,因此添加该IP到Cloud SQL白名单无法生效。以下按优先级给出可落地的解决方案:


方案1:Cloud SQL Auth Proxy(官方推荐,安全性最高,无需配置白名单)

这是GCP官方推荐的GKE访问Cloud SQL的方案,全程走加密内网,无需暴露数据库到公网。

  • 给GKE工作负载使用的ServiceAccount绑定roles/cloudsql.client权限,命令参考:
    gcloud projects add-iam-policy-binding 你的项目ID --member="serviceAccount:你的工作负载服务账号邮箱" --role="roles/cloudsql.client"
    
  • 在Deployment配置中新增Cloud SQL Auth Proxy作为Sidecar容器,镜像使用gcr.io/cloudsql-docker/gce-proxy:1.33.2,启动参数配置为:/cloud_sql_proxy -instances=你的项目ID:实例所在区域:实例名=tcp:0.0.0.0:5432
  • 修改应用内的数据库连接地址为127.0.0.1:5432,数据库账号、密码、库名等其他配置保持不变即可。

方案2:VPC私有IP访问(适合同VPC内资源互访场景)

  • 给Cloud SQL实例开启私有IP,选择和GKE Autopilot集群相同的VPC网络
  • 在Cloud SQL的授权网络配置中,添加GKE集群的Pod网段、节点网段为允许访问的来源
  • 应用内的数据库连接地址直接填写Cloud SQL的私有IP即可,无需走公网链路。

方案3:公网访问修正配置(不推荐,安全性低)

如果必须使用公网连接Cloud SQL,按以下步骤配置:

  • 给GKE集群所在的VPC配置Cloud NAT,绑定固定的公网IP段
  • 将Cloud NAT绑定的固定IP段添加到Cloud SQL的公网白名单中
  • 应用内的数据库连接地址填写Cloud SQL的公网IP即可。

通用排查项

  • 确认Cloud SQL实例的对应访问方式(公网/私有IP)已开启
  • 可进入GKE的Pod中执行nc 数据库连接地址 5432测试网络连通性,区分是网络问题还是应用配置问题
  • 核对应用内的数据库连接串的账号、密码、端口、库名参数是否和Cloud SQL配置一致

内容的提问来源于stack exchange,提问作者Hyeonkyu Han

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 21:36:03