Kubernetes node.js 容器无法连接到 MongoDB Atlas

Mat*_*eks 9 mongoose mongodb node.js kubernetes mongodb-atlas

所以我整个下午都在为此苦苦挣扎。我根本无法让我的 NodeJS 应用程序在 kubernetes 上运行以连接到我的 MongoDB Atlas 数据库。

在我的应用程序中,我尝试运行

mongoose.connect('mongodb+srv://admin:<password>@<project>.gcp.mongodb.net/project_prod?retryWrites=true&w=majority', { useNewUrlParser: true })
Run Code Online (Sandbox Code Playgroud)

但我只是得到错误

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)
Run Code Online (Sandbox Code Playgroud)

我也尝试过设置 ExternalName 服务,但是使用 URL 或 ExternalName 导致我无法连接到数据库。

我已经在 MongoDB Atlas 上将我的 IP 列入白名单,所以我知道这不是问题。

它似乎也适用于我的本地机器,但不适用于 kubernetes pod。我究竟做错了什么?

Mat*_*eks 9

我发现了这个问题,我的 pod DNS 没有配置为允许外部连接,所以我dnsPolicy: Default在我的 YML 中设置,因为奇怪的Default是实际上并不是默认值