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

求助:AWS Kubernetes集群中Pod无法连接同VPC内的Postgres RDS实例

排查K8s Pod无法访问同VPC内RDS的步骤

老哥,我之前处理过完全一样的场景,节点能连但Pod连不上,大概率是K8s网络层面的配置遗漏,咱们从最基础的测试开始排查:

1. 先在Pod内部做基础连通性验证

先别猜问题,直接在Pod里做测试,拿到具体报错:

  • 进入Pod执行telnet测试:kubectl exec -it <你的Pod名称> -- telnet <rds-endpoint> 5432,或者用nc更直观:kubectl exec -it <你的Pod名称> -- nc -zv <rds-endpoint> 5432,看是连接超时还是连接被拒绝,这俩指向的问题完全不同。
  • 同时测试DNS解析:kubectl exec -it <你的Pod名称> -- nslookup <rds-endpoint>,确认Pod能不能把RDS端点解析到正确的私有IP——要是解析出公网IP,那DNS配置肯定有问题。

2. 检查Kubernetes网络策略

很多时候是集群里的网络策略把Pod的出站流量给拦了:

  • 先看当前命名空间的网络策略:kubectl get networkpolicy -n <你的应用命名空间>
  • 如果有策略存在,先临时删除测试(别担心,测试完可以加回来):kubectl delete networkpolicy <策略名称> -n <你的应用命名空间>,删完再试Pod连RDS。
  • 要是用了Calico、Cilium这类CNI插件,哪怕你没手动创建策略,它们可能自带默认的拒绝规则,得去插件的配置里确认。

3. 重点:RDS安全组是否允许Pod的IP段访问

这是90%的人会踩的坑!你说RDS安全组允许的是K8s节点的EC2 IP,但Pod的IP属于集群的Pod CIDR,不是节点的EC2私有IP:

  • 先查集群的Pod CIDR:EKS的话用aws eks describe-cluster --name <集群名称> --query "cluster.resourcesVpcConfig.podCidr",或者通用方法kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'看每个节点的Pod子网
  • 去RDS的安全组里,把整个Pod CIDR段添加到入站规则,允许5432端口的访问。节点能通是因为用的节点IP,但Pod访问VPC内资源默认是用自己的Pod IP(除非你特意配置了SNAT)。

4. 验证Pod的出口IP

有些集群配置了SNAT,Pod访问外部用节点IP,但访问VPC内部用Pod IP:

  • 在Pod里查出口IP:kubectl exec -it <你的Pod名称> -- curl ifconfig.me(或者用wget -qO- ifconfig.me)
  • 拿到这个IP后,去RDS安全组里看是否在允许列表里——如果是Pod IP,那必须加Pod CIDR;如果是节点IP,那回到网络策略或者CNI的排查。

5. 检查节点的iptables和流量捕获

如果前面都没问题,就去节点上看流量有没有被拦截:

  • 在节点上执行iptables-save | grep <RDS的私有IP>,看看有没有拒绝该IP的规则
  • 用tcpdump抓流量:tcpdump -i any host <RDS的私有IP> and port 5432,然后在Pod里发起连接,看节点上能不能抓到数据包——要是抓不到,说明CNI没把Pod的流量转发出去;要是抓到但没回应,那还是RDS安全组的问题。

6. 检查CNI插件状态

如果是EKS用VPC CNI,先确认插件正常:

  • 看aws-node Pod状态:kubectl get pods -n kube-system -l k8s-app=aws-node,确保所有Pod都是Running
  • 看插件日志:kubectl logs -n kube-system <aws-node的Pod名称>,找有没有IP分配失败、网络配置错误的报错。

内容的提问来源于stack exchange,提问作者DevOps guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 14:29:08