Kubernetes环境下无法连接Helm部署的PostgreSQL Pod,报HostNotFoundError
问题排查与解决方法
核心根因
从报错日志可直接看出,应用实际尝试解析的主机名为postgres-postgresql\n,末尾多了一个换行符,这是HostNotFoundError的直接诱因。
需要检查sequelize配置的host值加载链路:如果host是从环境变量、挂载的配置文件或其他外部配置源读取,大概率是读取操作意外带入了末尾的换行符,清理掉多余的换行符即可解决问题。
其他可排查场景(清理换行后仍无法连接时参考)
- 同命名空间DNS验证:进入运行中的jupiter应用Pod,执行
nslookup postgres-postgresql,如果返回PostgreSQL Service对应的ClusterIP(当前环境为10.92.3.97)则集群DNS服务正常;如果解析失败,先检查CoreDNS服务运行状态。 - 跨命名空间适配:如果jupiter应用与PostgreSQL部署在不同命名空间,需要将host配置为
postgres-postgresql.<PostgreSQL所在命名空间>.svc.cluster.local,默认仅同命名空间下的Service可直接用服务名访问。 - 网络策略校验:检查集群是否配置了NetworkPolicy,禁止了jupiter服务到PostgreSQL 5432端口的访问,如有对应策略需放开访问权限。
- 快速连通性验证:可临时将sequelize配置中的host替换为PostgreSQL的ClusterIP
10.92.3.97,如果能正常连接即可完全锁定问题在域名解析链路。
内容的提问来源于stack exchange,提问作者Hiep Nguyen
相关产品推荐
相关产品推荐

