<p>I am encountering an ENOTFOUND error within a multi-container Kubernetes pod.  MongoDB is in one Docker container and appears to be fully operational, and a Node.js application is in another container (see its error below).</p>

<pre>/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)</pre>

<p>In the application container I can do the following, so it seems to know that MongoDB is available on port 27017.</p>

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

<p>The application is intended to create databases in MongoDB, and populate collections. This same set of Docker containers work fine with Docker using a docker-compose.yml file.  The containers are part of a legacy application (there are other containers in the same pod), and I don't have much control over their content.</p>

<p>I have checked logs for the various containers. Have reviewed all stock pods with "kubectl get pods" and all are working fine.  Using "flannel" for CNI, so use the following to initialize Kubernetes.</p>

<pre>kubeadm init --pod-network-cidr=10.244.0.0/16</pre>

djsys
<p>According to the error output, your NodeJS application tries to connect to MongoDB database via <code>mongodb:27017</code>.</p>

<p>As both NodeJS application and MongoDB database are containers of the same pod, NodeJS application should be connected to MongoDB database via <code>localhost:27017</code> instead, because containers in a pod share storage/network resources.</p>

<p>So, you need to change NodeJS application's configuration: set connection to MongoDB <code>localhost:27017</code> instead of <code>mongodb:27017</code>.</p>
