将 JavaScript (Node.js) 部署到 Kubernetes:分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

将 JavaScript (Node.js) 部署到 Kubernetes:基础实践指南



现代 Web 开发离不开容器化和编排。如果您使用 JavaScript (Node.js) 进行开发,迟早会面临一个问题:如何可靠地在生产环境中运行应用程序,确保其可扩展性和容错性?答案是 Kubernetes。这不仅仅是一个时髦的工具,更是管理容器化应用程序的事实标准。

在本指南中,我们将介绍将简单 Node.js 应用程序部署到 Kubernetes 的完整流程。您将学习如何将代码打包成 Docker 镜像、创建必要的清单文件,并在集群中运行所有内容。本材料面向已经熟悉 Node.js 基础知识并希望掌握 DevOps 实践的开发者。



1. 准备 Node.js 应用程序以进行容器化

在将应用程序部署到 Kubernetes 之前,需要将其打包到容器中。为此,我们将创建一个简单的 Express 应用程序。请确保您已安装 Node.js 和 npm。

创建文件 app.js:

const express = require('express');const app = express();const port = process.env.PORT || 3000;

app.get('/', (req, res) => { res.json({ message: 'Hello from Node.js on Kubernetes!' });});

app.get('/health', (req, res) => { res.status(200).send('OK');});

app.listen(port, () => { console.log(`Server running on port ${port}`);});

务必添加 /health 端点——Kubernetes 将使用它进行存活检查(liveness probe)。

现在,在项目根目录下创建 Dockerfile:

FROM node:18-alpine

WORKDIR /usr/src/app

COPY package*.json ./RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]

构建镜像并在本地测试:

docker build -t my-node-app:latest .docker run -p 3000:3000 my-node-app:latest

打开 http://localhost:3000——您应该会看到 JSON 响应。



2. 用于 Node.js 的基本 Kubernetes 清单文件

Kubernetes 使用声明式配置(YAML)。要部署 Node.js 应用程序,我们至少需要两个基本资源:Deployment 和 Service。



2.1. Deployment

Deployment 管理应用程序的副本。创建文件 deployment.yaml:

apiVersion: apps/v1kind: Deploymentmetadata:  name: node-app-deployment  labels:    app: node-appspec:  replicas: 3  selector:    matchLabels:      app: node-app  template:    metadata:      labels:        app: node-app    spec:      containers:      - name: node-app        image: my-node-app:latest        ports:        - containerPort: 3000        env:        - name: PORT          value: "3000"        livenessProbe:          httpGet:            path: /health            port: 3000          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /            port: 3000          initialDelaySeconds: 3          periodSeconds: 5

重要事项:

  • replicas: 3 — Kubernetes 将创建 3 个应用程序副本以实现容错。
  • livenessProbe — 检查应用程序是否存活。如果没有响应,Kubernetes 将重启容器。
  • readinessProbe — 检查应用程序是否准备好接收流量。在检查通过之前,Pod 不会收到请求。


2.2. Service

Service 提供对 Pod 的网络访问。创建 service.yaml:

apiVersion: v1kind: Servicemetadata:  name: node-app-servicespec:  selector:    app: node-app  ports:    - protocol: TCP                

博客

书籍推荐