Привязка app.listen (5000) к сервисному IP вместо назначенного IP-адреса - PullRequest
0 голосов
/ 07 октября 2019

Мы разворачиваем контейнерное приложение NodeJS в Openshift, и одно из наших развертываний (из 50 или около того) ведет себя забавно. Мы замечаем, что приложение NodeJS, открывающееся на 0.0.0.0:5000, привязывается к IP-адресу службы, а не к IP-адресу, назначенному openshift для модуля. Трассировка стека приведена ниже:

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.

Наш обходной путь - запустить модуль и запустить службу, которая работает. Это означает, что, когда модуль умирает и впоследствии перезапускается, он не будет связываться и будет производить вышеуказанную трассировку стека. Мы не можем воспроизвести проблему ни в одном из наших других случаев. Есть что-то, что мы должны проверять / что-то неправильно настроено?

Для контекста наш сервис выглядит следующим образом

---

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