【发布时间】:2019-10-17 12:56:55
【问题描述】:
所以我整个下午都在为此苦苦挣扎。我根本无法让我的 NodeJS 应用程序在 kubernetes 上运行以连接到我的 MongoDB Atlas 数据库。
在我的应用程序中我尝试过运行
mongoose.connect('mongodb+srv://admin:<password>@<project>.gcp.mongodb.net/project_prod?retryWrites=true&w=majority', { useNewUrlParser: true })
但我只是得到错误
UnhandledPromiseRejectionWarning: Error: querySrv ETIMEOUT _mongodb._tcp.<project>.gcp.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (dns.js:196:19)
(node:32) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 17)
我也尝试过设置 ExternalName 服务,但是使用 URL 或 ExternalName 会导致我无法连接到数据库。
我已将我的 IP 在 MongoDB Atlas 上列入白名单,所以我知道这不是问题。
它似乎也适用于我的本地机器,但不适用于 kubernetes pod。我做错了什么?
【问题讨论】:
-
你能允许所有的 IP 地址都被列入白名单,然后尝试同样的吗?
-
似乎没有什么区别,这是有道理的,因为它似乎是一个 DNS 错误。如果您从无效主机连接,Mongoose 将给出错误提示,说明您的 IP 未列入白名单。
标签: node.js mongodb mongoose kubernetes mongodb-atlas