app.listen(5000)绑定到服务IP而不是分配的Pod IP

时间:2019-10-07 17:48:28

标签: node.js express networking openshift

我们正在Openshift中部署一个容器化的NodeJS应用程序,而我们的一个部署(大约50个部署中)表现得很有趣。我们注意到在0.0.0.0:5000上打开的NodeJS应用程序绑定到服务IP,而不是openshift分配给Pod的IP。堆栈跟踪如下:

Error: listen EACCES: permission denied tcp://[service ip]:5000

    at Server.setupListenHandle [as _listen2] (net.js:1262:19)

    at listenInCluster (net.js:1327:12)

    at Server.listen (net.js:1425:5)

    at Function.listen (/usr/local/app-server/node_modules/express/lib/application.js:618:24)

    at Object.<anonymous> (/usr/local/app-server/server.js:1:1511)

    at Module._compile (internal/modules/cjs/loader.js:776:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)

    at Module.load (internal/modules/cjs/loader.js:653:32)

    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)

    at Function.Module._load (internal/modules/cjs/loader.js:585:3)

    at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)

    at startup (internal/bootstrap/node.js:283:19)

    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

Emitted 'error' event at:

    at emitErrorNT (net.js:1306:8)

    at process._tickCallback (internal/process/next_tick.js:63:19)

    at Function.Module.runMain (internal/modules/cjs/loader.js:832:11)

    at startup (internal/bootstrap/node.js:283:19)

    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

npm ERR! code ELIFECYCLE

npm ERR! errno 1

npm ERR! app-server@1.0.0 start: `node server.js`

npm ERR! Exit status 1

npm ERR! 

npm ERR! Failed at the app-server@1.0.0 start script.

npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

我们的变通方法是启动容器,然后启动服务,该方法可以正常工作。这意味着,当Pod死亡并随后重新启动时,它将无法绑定,并会产生上述堆栈跟踪。我们无法在其他任何实例上重现该问题。我们应该检查什么/配置有误吗?

对于上下文,我们的服务如下所示

---

apiVersion: v1
kind: Service
metadata: 
  name: "node-app"
spec: 
  ports: 
    - name: node-app-5000
      port: 5000
  selector: 
    app: "application"
    service: node-app
  type: ClusterIP
---

0 个答案:

没有答案