将 JavaScript 部署到 Kubernetes:面向初学者的基础指南

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

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

开始课程

引言:为何要将 JavaScript 部署到 Kubernetes?



现代 Web 开发离不开容器化。如果您使用 JavaScript (Node.js) 进行开发,并希望您的应用程序稳定运行、自动扩展且具备高可用性——那么 Kubernetes (K8s) 将成为您最好的伙伴。



Kubernetes 是一个容器编排平台。它管理着您应用程序的部署、扩展和运行。在本指南中,我们将介绍如何将一个简单的 Node.js 应用程序基本部署到 Kubernetes。您将学习如何将代码打包成 Docker 镜像,以及如何创建 Pod、Service 和 Deployment。



本文面向 初学者。假设您已经安装了 Docker 和 Minikube(或者可以访问 K8s 集群)。



步骤 1:准备 Node.js 应用程序和 Docker 镜像



首先,我们创建一个基于 Express 的简单 Web 应用程序。它将响应 HTTP 请求。



1.1. 应用程序代码 (app.js)



创建文件 app.js:



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

app.get('/', (req, res) => { res.send('来自 Kubernetes 的问候!');});

app.listen(PORT, () => { console.log(`服务器已在端口 ${PORT} 上启动`);});


1.2. package.json 文件



创建 package.json:



{  "name": "k8s-node-app",  "version": "1.0.0",  "main": "app.js",  "scripts": {    "start": "node app.js"  },  "dependencies": {    "express": "^4.18.2"  }}


1.3. Dockerfile



现在创建用于构建镜像的 Dockerfile:



FROM node:18-alpine

WORKDIR /usr/src/app

COPY package*.json ./RUN npm install

COPY . .

EXPOSE 3000

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


1.4. 构建并推送镜像



执行命令:



docker build -t my-node-app:v1 .


如果您使用 Minikube,请在其环境中构建镜像:



minikube image build -t my-node-app:v1 .


或者,将镜像推送到 Docker Hub/任意镜像仓库,并在清单文件中指定它。



步骤 2:Kubernetes 核心对象(Pod、Deployment、Service)



Kubernetes 通过对象进行管理。部署时需要三个核心对象:



  • Pod — 最小单元,包含一个或多个容器。
  • Deployment — 管理 Pod,提供扩缩容和更新能力。
  • Service — 提供访问 Pod 的稳定入口(通常通过 ClusterIP 或 NodePort)。


2.1. 创建 Deployment



创建文件 deployment.yaml:



apiVersion: apps/v1kind: Deploymentmetadata:  name: node-app-deploymentspec:  replicas: 3  selector:    matchLabels:      app: node-app  template:    metadata:      labels:        app: node-app    spec:      containers:      - name: node-app        image: my-node-app:v1        ports:        - containerPort: 3000        env:        - name: PORT          value: "3000"


说明:

  • replicas: 3 — 启动 3 个应用副本以实现高可用性。
  • selector 和 labels — 将 Deployment 与 Pod 关联。
  • image — 您的 Docker 镜像名称。


2.2. 创建 Service



创建文件 service.yaml 以访问应用程序:



apiVersion: v1kind: Servicemetadata:  name: node-app-servicespec:  selector:    app: node-app  ports:    - protocol: TCP      port: 80      targetPort: 3000  type: NodePort


这里发生了什么:

  • Service 将流量从端口

博客

书籍推荐