簡體   English   中英

Node.js應用程序無法使用Kubernetes連接到MongoDB Docker容器

[英]Node.js application fails to connect to MongoDB Docker container using Kubernetes

我在多容器Kubernetes容器中遇到ENOTFOUND錯誤。 MongoDB在一個Docker容器中,並且似乎可以完全運行,而Node.js應用程序在另一個容器中(請參見下面的錯誤)。

/opt/systran/apps-node/enterprise-server/node_modules/mongoose/node_modules/mongodb/lib/replset.js:365
          process.nextTick(function() { throw err; })
                                        ^
MongoError: failed to connect to server [mongodb:27017] on first connect [MongoError: getaddrinfo ENOTFOUND mongodb mongodb:27017]
    at Pool. (/opt/systran/apps-node/enterprise-server/node_modules/mongodb-core/lib/topologies/server.js:336:35)
    at emitOne (events.js:116:13)
    at Pool.emit (events.js:211:7)
    at Connection. (/opt/systran/apps-node/enterprise-server/node_modules/mongodb-core/lib/connection/pool.js:280:12)
    at Object.onceWrapper (events.js:317:30)
    at emitTwo (events.js:126:13)
    at Connection.emit (events.js:214:7)
    at Socket. (/opt/systran/apps-node/enterprise-server/node_modules/mongodb-core/lib/connection/connection.js:189:49)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)

在應用程序容器中,我可以執行以下操作,因此似乎知道MongoDB在端口27017上可用。

curl "http://localhost:27017"
It looks like you are trying to access MongoDB over HTTP on the native driver port.

該應用程序旨在在MongoDB中創建數據庫,並填充集合。 使用docker-compose.yml文件,這組相同的Docker容器可以與Docker正常工作。 這些容器是舊版應用程序的一部分(在同一容器中有其他容器),我對其內容沒有太多控制。

我已經檢查了各種容器的日志。 用“ kubectl get pods”檢查了所有庫存豆莢,並且一切正常。 對CNI使用“法蘭絨”,因此請使用以下內容初始化Kubernetes。

kubeadm init --pod-network-cidr=10.244.0.0/16

根據錯誤輸出,您的NodeJS應用程序嘗試通過mongodb:27017連接到MongoDB數據庫。

由於NodeJS應用程序和MongoDB數據庫都是同一Pod的容器,因此NodeJS應用程序應通過localhost:27017連接到MongoDB數據庫,因為Pod中的容器共享存儲/網絡資源。

因此,您需要更改NodeJS應用程序的配置:將連接設置為MongoDB localhost:27017而不是mongodb:27017

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM