我在多容器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:无法连接到服务器[ mongodb:27017]首先 在Pool上连接[MongoError:getaddrinfo ENOTFOUND mongodb mongodb:27017] 。(/opt/systran/apps-node/enterprise-server/node_modules/mongodb-core/lib/topologies/server.js:336:35) 在emitOne(13 events.js::116) 在Pool.emit(事件。 js:211:7) 。(/opt/systran/apps-node/enterprise-server/node_modules/mongodb-core/lib/connection/pool.js:280:12) 位于atmitTwo(events.js:317:30) 。 js:126:13) 在 Socket的Connection.emit(events.js:214:7)处。(/opt/systran/apps-node/enterprise-server/node_modules/mongodb-core/lib/connection/connection.js:189:49) 在emitOne的Object.onceWrapper(events.js:315:30) (事件。 js:116:13)出现 在Socket.emit(events.js:211:7) 出现 在_combinedTickCallback(internal / process / next_tick.js:138:11)出现 在emitErrorNT(internal / streams / destroy.js:64:8)process._tickCallback(内部/进程/next_tick.js:180:9)
在应用程序容器中,我可以执行以下操作,因此似乎知道MongoDB在端口27017上可用。
curl“ http:// localhost:27017” 似乎您正在尝试通过本机驱动程序端口上的HTTP访问MongoDB。
该应用程序旨在在MongoDB中创建数据库,并填充集合。使用docker-compose.yml文件,这组相同的Docker容器可与Docker正常工作。容器是旧版应用程序的一部分(在同一容器中有其他容器),我对其内容没有太多控制。
我已经检查了各种容器的日志。用“ kubectl get pods”检查了所有库存豆荚,并且一切正常。对于CNI使用“法兰绒”,因此请使用以下内容初始化Kubernetes。
kubeadm初始化--pod-network-cidr = 10.244.0.0 / 16
根据错误输出,您的NodeJS应用程序尝试通过连接到MongoDB数据库mongodb:27017
。
由于NodeJS应用程序和MongoDB数据库都是同一个Pod的容器,因此NodeJS应用程序应改为通过MongoDB数据库连接localhost:27017
,因为Pod中的容器共享存储/网络资源。
因此,您需要更改NodeJS应用程序的配置:将连接设置为MongoDBlocalhost:27017
而不是mongodb:27017
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句