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

GCP K8s节点可访问私有IP但Pod无法访问Cloud SQL的解决方法

GKE集群Pod无法通过私有IP访问Cloud SQL Postgres排查方案

节点可正常访问目标IP、Pod访问失败的核心原因是Pod流量的转发、路由或访问控制规则异常,按以下优先级排查:

基础连通性验证

  • 进入故障Pod执行连通性测试:nc -zv <Cloud SQL私有IP> 5432 或 telnet <Cloud SQL私有IP> 5432,确认报错是超时还是连接拒绝
  • 在Pod所在节点执行抓包命令:tcpdump -i any host <Cloud SQL私有IP> and port 5432 -nn,复现Pod访问操作:
    • 若能看到Pod发出的SYN包但无回包,故障点在回程路由或防火墙拦截
    • 若完全看不到Pod发出的访问包,故障点在集群CNI、节点iptables或集群网络策略拦截
  • 快速定位故障范围:启动hostNetwork模式的调试Pod执行kubectl run -it --rm debug --image=busybox --restart=Never --hostNetwork=true --overrides='{"spec": {"nodeName": "<可正常访问Cloud SQL的节点名>"}}' -- sh,在该Pod内测试连通性,如果能正常访问,可直接排除节点侧配置问题,聚焦Pod网段相关的路由、防火墙规则排查。

GCP平台侧配置排查

该类故障80%以上为平台侧配置漏加Pod网段规则导致,优先排查

  • 检查VPC路由连通性:确认GKE集群所在VPC与Cloud SQL私有IP所属VPC为同一VPC,或已建立VPC对等/私有服务访问(PSA)连接,且对等连接已开启路由转发,路由表中存在指向Pod CIDR段的有效路由。
  • 检查VPC防火墙规则:
    • 确认出站规则允许源为Pod CIDR段、目标为Cloud SQL私有IP的5432端口流量
    • 确认入站规则允许Cloud SQL地址段与Pod CIDR段的5432端口双向流量
    • 不要仅配置节点网段的放行规则,Pod跨节点访问外部地址时源IP为Pod IP而非节点IP
  • 检查Cloud SQL实例配置:确认实例的私有IP访问控制未配置源IP拦截,未将Pod CIDR段加入拒绝列表;若开启了VPC流日志,可直接过滤Pod IP到Cloud SQL IP的流量记录,查看流量被丢弃的具体原因。

集群侧配置排查

  • 检查集群网络策略:执行kubectl get networkpolicy -A,查看故障Pod所在命名空间是否存在出站拦截规则,若有则添加对应规则,放行Pod到Cloud SQL私有IP 5432端口的出站流量。
  • 检查节点转发规则:登录对应节点执行iptables -L FORWARD -n -v | grep DROP,查看是否存在拦截Pod CIDR段到Cloud SQL地址的转发规则;若使用Calico等第三方CNI,同步检查CNI自身的访问控制规则是否存在拦截。
  • 检查kube-proxy转发状态:若为iptables模式确认kube-proxy无异常重启、规则无篡改;若为IPVS模式执行ipvsadm -ln查看是否存在错误规则将Cloud SQL IP的流量转发到集群内Service。
  • 兜底检查节点转发参数:执行sysctl net.ipv4.ip_forward确认返回值为1,若为0会导致跨网段Pod流量无法正常转发。

特殊场景适配

  • 若使用GKE Dataplane V2:检查是否配置了基于Cilium的网络策略、FQDN过滤规则误拦截私有IP流量,可临时禁用对应策略测试连通性。
  • 若通过私有服务访问(PSA)对接Cloud SQL:确认PSA侧导入的路由段包含GKE的Pod CIDR段,仅导入节点网段会导致Cloud SQL侧的回程流量无法路由到Pod。

内容的提问来源于stack exchange,提问作者Bal Krishna Jha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:36:21