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

同VPC内Rancher Pod无法连接DocumentDB的排查求助

问题分析与排查方案

一、优先排查网络连通性(最可能的根因)

你在本地通过SSH隧道能正常访问,但同VPC的Pod里超时,大概率是网络层面的问题,按以下步骤验证:

  • 在Pod内测试端口连通性
    先在Pod里安装telnet或nc工具(Debian系用apt-get install telnet -y,RHEL系用yum install telnet -y),然后执行:
    telnet documentdbcluster 27017
    
    或用nc快速检测:
    nc -zv documentdbcluster 27017
    
    如果连不上,继续往下查:
  • 检查DocumentDB安全组规则
    确认DocumentDB的安全组入站规则允许Pod所在的安全组(或Pod的IP段)访问27017 TCP端口。DocumentDB默认安全组通常只开放给特定IP/安全组,Pod的安全组必须在允许列表内。
  • 排查Rancher网络策略
    检查Rancher是否配置了NetworkPolicy,限制了Pod的出站流量,是否有规则阻止Pod访问27017端口到DocumentDB地址。
  • 验证DNS解析
    在Pod内执行nslookup documentdbcluster,看能否正确解析到DocumentDB的私有IP。如果解析失败,可能是VPC DNS配置异常,或者Pod使用了自定义DNS服务器无法解析AWS内部域名。

二、排除连接配置问题

如果网络连通性没问题,再检查连接参数:

  • 确认证书路径正确
    你下载的global-bundle.pem要确保在pymongo可访问的路径下,若放在非工作目录,需写绝对路径(比如/tmp/global-bundle.pem),避免路径找不到导致的隐性错误。
  • 简化连接字符串测试
    先去掉非必要参数,用最小配置测试:
    from pymongo import MongoClient
    
    client = MongoClient(
        "mongodb://user:password@documentdbcluster:27017/",
        tls=True,
        tlsCAFile="./global-bundle.pem",
        authSource="admin",
        directConnection=True
    )
    # 测试连接
    print(client.list_database_names())
    
    如果能连接,再逐步添加replicaSet、readPreference等参数;如果还是超时,回到网络排查。
  • 确认副本集配置
    通过本地SSH连接执行rs.status(),确认DocumentDB的副本集名称确实是rs0。另外,副本集的所有节点必须在同一个VPC,且Pod能访问所有节点的IP——pymongo会自动发现副本集节点,若某个节点无法访问也会导致超时。

三、其他排查方向

  • Pod资源限制:用kubectl top pod <pod-name>检查Pod的CPU/内存使用率,资源不足可能导致网络请求超时。
  • VPC路由表:确认Pod所在子网的路由表没有被NAT网关或其他规则拦截,能正常访问DocumentDB的私有IP段。
  • pymongo版本兼容:旧版本pymongo可能和DocumentDB的TLS配置不兼容,尝试升级到最新稳定版:pip install --upgrade pymongo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:32:43