我有一个在 K8s 中运行的 python 脚本,运行良好。尝试在 docker 容器中本地运行代码,当它尝试连接到 MongoDB 时,我收到以下错误
pymongo.errors.ConfigurationError: The DNS response does not contain an answer to the question: _mongodb._tcp.cluster_name.abc123.mongodb.net IN SRV
连接字符串
mongodb+srv://username:password@cluster_name.abc123.mongodb.net
来自 Mongo UI“连接”指令,我根据产品库中保存的秘密验证了这一点。
当我跑步时
dig srv _mongodb._tcp.cluster_name.abc123.mongodb.net
我得到 3 个答案,每个分片 1 个。不过我觉得这样也好。
当我使用 https://toolbox.googleapps.com/apps/dig/#ANY/ (任何,不是 A 记录)时,它也会返回上述 3 个答案。一条记录没有返回任何答案。
据我了解,这表明这是我自己的路由器/ISP 无法解析 DNS 记录的问题?是这样吗?我该如何诊断并修复它以便我可以在本地运行此代码?
编辑:在 docker 之外运行脚本是可行的。在容器内运行它会产生上述情况。
我认为您容器内的 DNS 解析器有问题。
您需要通过添加/更新来调整 /etc/docker/daemon.json 文件
"dns": ["8.8.8.8"]
然后重新启动你的docker引擎。
您可以在这里找到更详细的答案:https://stackoverflow.com/a/62988037/23835516