node 应用:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, World!\n');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

kubenetes部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nodejs
  template:
    metadata:
      labels:
        app: nodejs
    spec:
      containers:
        - name: nodejs-container
          image: your-nodejs-image:tag
          ports:
            - containerPort: 3000

问题:

  1. containerPort能不能和NodeJS应用的端口不同,在这种情况下是3000?

推荐答案

containerPort:应该与应用程序正在使用的端口号匹配;在您的示例中,它应该正好是3000,而不是其他值.在机械层面上,Kubernetes不判断containerPort:的值,从技术上讲,您可以在那里写入任何您想要的端口号.

containerPort:实际上做得很少(也见Why do we need a port/containerPort in a Kuberntes deployment/container definition?). 如果您在为端口分配名称以从服务引用它的情况下使用它,那么它确实需要与容器中的进程实际使用的端口号相匹配. 与其他容器端口引用(e.g.docker run -p选项)一样,端口号需要匹配应用程序的端口;仅在容器级别更改端口号将导致连接问题,它不会更改应用程序侦听的位置.

Node.js相关问答推荐

如何解决TypeError:requ.isAuthenticated不是函数错误?

MongoDB-如何验证Document字段以仅允许特定的文件扩展名?

请求正文未定义

Next.js 路由不起作用 - 页面未正确加载

Solidity 将数据位置从内存更改为存储

如何使用 Remix 仅在客户端呈现组件?

node-gyp: "..\src\binding.cc: 没有这样的文件或目录"

在 NodeJS/ESP32 中通过 WebSocket 发送二进制数据 - 如何识别二进制和文本消息

在 `DataFrame` 上使用用户定义的可链接函数抽象出 Polars 表达式

AWS EC2 npm install 突然很慢

在 gatsby 中安装软件包时不推荐使用的错误

users.watch(在 gmail google api 中)如何收听通知?

Base64 编码一个 javascript 对象

如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?

如何在 Joi 字符串验证中使用枚举值

在 Node.js 中使用公钥加密数据

使用 Node.js 和 Express 进行简单的 API 调用

使用 node 的内置调试器判断变量?

node.js 示例

FireStore 如果不存在则创建一个文档