【问题标题】:how to resolve Cannot GET / in a kubernetes deployment?如何解决无法 GET / 在 kubernetes 部署中?
【发布时间】:2019-09-26 21:17:50
【问题描述】:

我有一个名为“process-core”的 node.js 应用程序,它的主要逻辑是运行另一个名为“page-core”的 node.js 应用程序。通过“Process-core”我正在部署分发文件夹(静态内容) 的“页面核心”应用程序。我正在使用 kubernetes 部署它。

dockerfile 用于为“process-core”构建镜像

FROM node:8

RUN mkdir -p usr/src/app

WORKDIR /usr/src/app

COPY . .

WORKDIR /usr/src/app

RUN npm install

CMD [ "npm","start" ]

我的 server.js 是这样的-

var express = require('express');
var cors = require('cors')
var app = express();
var path = require('path');
var router = express.Router();
var request = require('request');

var api = require('./server/api.js')

const base_url = 'http://localhost:8080/api/';
const static_dir = '/home/vignesh/page-core-devbranch/dist';  // location of 
const assets_dir = path.join(__dirname + '/server/assets/');      dist folder
const tools_dir = path.join(__dirname + '/server/tools/');
const index_file = path.join(static_dir + '/index.html');

/* static */
app.use(cors())
app.use(express.static(static_dir));
app.use('/assets', express.static(assets_dir));
app.use('/tools', express.static(tools_dir));



/* listen */
app.listen(5000);

node.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    node: test
  name: nodetest
spec:
  ports:
  - nodePort: 30000
    port: 5000
    protocol: TCP
    targetPort: 5000
  selector:
    node: test
  type: NodePort

---

apiVersion: v1
kind: Pod
metadata:
  name: nodetest
  labels:
    node: test
spec:
  containers:
  - name: node-test
    image: suji165475/devops-sample:processcore
    ports:
    - containerPort: 5000

当我点击 http://206.189.22.155:30000/ 时,我收到一条错误消息:Cannot GET /

【问题讨论】:

  • 尝试发送请求到http://206.189.22.155:5000

标签: node.js docker kubernetes


【解决方案1】:
FROM node:8

RUN mkdir -p usr/src/app

WORKDIR /usr/src/app

COPY . .

WORKDIR /usr/src/app

RUN npm install

EXPOSE 5000

CMD [ "npm","start" ]

您还没有在 docker 文件中暴露 docker 镜像中的端口,请在 docker 文件中添加一行 EXPOSE 5000 以从 docker 容器中打开容器端口 5000。

【讨论】:

  • 我们是在 docker 文件中指定命令“npm start”还是在 kubenretes yaml 文件本身中指定?
  • 喜欢命令:[ "/bin/bash", "-ce", "npm start" ] 在 yaml 文件的末尾?
  • 是的,您可以在文件 dockerfile 以及 kubernetes yaml 文件中指定
  • 我按照你说的做了,但我仍然收到一条错误消息:Cannot GET / at url 206.189.22.155:30000
  • 基本上这应该部署page-core应用的dist文件夹
猜你喜欢
  • 2021-06-06
  • 2019-10-19
  • 2020-07-19
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 2021-06-02
  • 2020-09-13
相关资源
最近更新 更多