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

从EKS Pod连接AWS RDS时psql报错,telnet正常,如何解决?

EKS Pod连接AWS RDS PostgreSQL失败排查方案

问题描述

  • 从EKS Pod内部执行telnet [RDS_ENDPOINT] 5432,返回Connected to [RDS_ENDPOINT],网络端口可达
  • 使用psql连接时触发报错:

psql: error: connection to server at [RDS_ENDPOINT], port 5432 failed: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

  • 其他外部实例可正常连接该RDS,psql客户端版本与PostgreSQL服务器版本完全一致(12.10)
  • 运行pg_isready返回no response

排查与解决步骤

1. 校验RDS安全组/网络ACL规则

尽管telnet测试端口可达,但PostgreSQL在连接握手阶段仍可能被安全策略拦截:

  • 检查RDS安全组入站规则,确认是否允许EKS Pod所在VPC CIDR、EKS节点IP段或Pod关联ENI的IP访问5432端口
  • 验证网络ACL的入站/出站规则,确保没有针对Pod来源的5432端口拒绝策略

2. 验证Pod内部DNS解析正确性

如果telnet使用的是RDS域名,需确认Pod内部DNS解析返回的IP与RDS控制台显示的端点IP一致:

nslookup [RDS_ENDPOINT]

若解析异常,需检查EKS CoreDNS配置或Pod的DNS策略是否存在问题。

3. 检查RDS的pg_hba.conf访问控制规则

RDS的pg_hba.conf直接控制客户端访问权限,即使网络连通,也可能因规则限制被拒:

  • 登录RDS控制台,查看目标实例关联参数组的pg_hba_rules,确认是否包含允许EKS Pod来源IP段、对应用户名/数据库的访问规则(例如host [数据库名] [用户名] [Pod/节点CIDR] md5)

4. 查看RDS日志定位具体报错

RDS PostgreSQL日志会记录连接失败的详细原因(如认证失败、连接数超限等):

  • 进入RDS实例的「日志和事件」页面,下载最新的PostgreSQL日志文件,搜索connection closed或authentication failed关键词

5. 检查EKS NetworkPolicy限制

若集群配置了NetworkPolicy,可能限制了Pod对外部RDS的出站流量:

  • 查看Pod所在命名空间的NetworkPolicy规则,确认是否允许Pod向RDS端点的5432端口发起请求
  • 可临时删除相关NetworkPolicy测试连接是否恢复

6. 确认psql连接参数正确性

确保psql命令的参数无拼写或配置错误:

psql -h [RDS_ENDPOINT] -p 5432 -U [用户名] -d [数据库名]

排查是否因用户名不存在、数据库名错误、密码不正确等参数问题导致连接被拒。

7. 检查RDS连接数是否超限

若RDS的最大连接数已达上限,会直接拒绝新连接:

  • 查看RDS控制台「监控」页面的DatabaseConnections指标,确认是否接近或达到max_connections参数值
  • 若超限,可调整参数组的max_connections配置,或优化现有连接的复用策略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:33