如何用Kubernetes部署Node.js项目

风枫姑娘_2441

风枫姑娘_2441

2026-09-20

448人浏览

原创

生产环境必须用deployment+service yaml,而非kubectl run;node.js镜像需alpine多阶段构建、非root用户、精确暴露端口、合理配置replicas/resources/probes/selector及语义化镜像标签。

如何用kubernetes部署node.js项目

直接用 kubectl run 能跑起来,但生产环境必须写 Deployment + Service YAML,否则无法扩缩容、健康检查或暴露端口。

Node.js 镜像必须用多阶段构建且非 root 用户

很多人用 FROM node:18 直接 COPY + CMD,结果镜像超 1GB、权限过高、启动慢。Alpine 基础镜像 + 多阶段构建才是实际做法:

  • RUN npm ci --only=productionnpm install 更快更确定,跳过 devDependencies
  • 最终镜像里只保留 /app/node_modules 和代码,不带 node_modules/.bin 或构建工具
  • 必须加 USER node,否则容器默认以 root 运行,Kubernetes PodSecurityPolicy 或 PodSecurityAdmission 会拒绝调度
  • 暴露端口要和代码监听端口一致:比如 app.listen(3000) 就得 EXPOSE 3000,否则 livenessProbe 会失败

Deployment YAML 里 replicas 和 imagePullPolicy 容易写错

常见错误是本地测试时用 image: my-node-app:latest,但没设 imagePullPolicy: Always,导致 Kubernetes 复用旧缓存镜像;或者在 CI/CD 中硬编码 replicas: 1,上线后扛不住流量。

Revealjs Presentations
Revealjs Presentations

创建、编辑并部署 reveal.js 演示文稿为单个 HTML 文件,可选自定义 CSS。适用于需要制作演示文稿、幻灯片或宣传材料时使用。

下载
  • imagePullPolicy 在私有仓库或本地 Minikube 环境下建议显式写成 Always,避免拉取 stale 镜像
  • replicas 别写死,用 Helm value 或 Kustomize patch 替代,方便不同环境差异化配置
  • containerPort 必须和 EXPOSE 及应用实际监听端口一致,Kubernetes 不校验这个值,但 Service 的 targetPort 依赖它
  • 务必加 resources.requests,哪怕只是 memory: "64Mi",否则在资源紧张的集群中可能被 OOMKilled

Service 类型选错会导致服务根本访问不到

ClusterIP 是默认类型,只能集群内访问;想从外部访问,不能只改 type: LoadBalancer 就完事——Minikube 需要 minikube tunnel,裸金属集群得配 MetalLB,云厂商才真正支持自动创建 LB。

  • 开发调试优先用 kubectl port-forward service/your-service 3000:3000,绕过 Service 类型限制
  • 若用 NodePort,注意端口范围默认是 30000–32767,别写 port: 80port: 3000
  • service.spec.selector 必须和 Deployment 的 spec.template.metadata.labels 完全匹配,一个字段不一致就找不到 Pod
  • HTTP 应用建议加 readinessProbe,比如 httpGet.path: /healthz,避免流量打到还没 ready 的实例上

最常被忽略的是镜像 tag —— 本地 docker build -t myapp:v1 . && docker push 后,YAML 里写的却是 image: myapp:latest,而集群拉的其实是 registry 里早已过期的 latest。每次更新必须用语义化版本(如 v1.2.3)并同步更新 YAML 中的 image 字段。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
node.js调试
node.js调试

node.js调试可以使用console.log()输出调试信息、断点调试和第三方调试工具。详细介绍:1、console.log()输出调试信息,通过在代码中插入console.log()语句,开发人员可以在控制台输出变量的值、函数的执行结果等信息,以便观察代码的执行流程和状态;2、断点调试,可以在代码中设置断点,以便在特定位置暂停代码的执行,观察变量的值和执行流程等。

2023.09.19

8509

8

JavaScript 全栈开发基础(Node.js + 前端)
JavaScript 全栈开发基础(Node.js + 前端)

本专题系统介绍 JavaScript 在全栈开发中的核心知识结构,涵盖 Node.js 基础、Express/Koa 接口构建、前端交互设计、模块化与包管理、数据库连接、前后端数据通信与部署流程。通过完整项目示例,帮助学习者掌握从浏览器到服务器的一体化开发能力,实现真正意义上的全栈入门。

2025.11.26

354

14

Node.js后端开发与Express框架实践
Node.js后端开发与Express框架实践

本专题针对初中级 Node.js 开发者,系统讲解如何使用 Express 框架搭建高性能后端服务。内容包括路由设计、中间件开发、数据库集成、API 安全与异常处理,以及 RESTful API 的设计与优化。通过实际项目演示,帮助开发者快速掌握 Node.js 后端开发流程。

2026.02.10

721

17

JavaScript Node.js流处理与高效数据管道构建实践
JavaScript Node.js流处理与高效数据管道构建实践

本专题聚焦 Node.js 在大规模数据处理场景中的应用,系统讲解 Stream 流机制、背压控制、管道(Pipe)处理以及文件与网络数据流的高效传输方式。内容包括可读流、可写流、双工流与转换流的实现原理,并结合实际案例构建高性能数据处理管道,帮助开发者提升数据处理效率与系统吞吐能力。

2026.04.07

264

13

TypeScript Node.js 全栈工程化与Monorepo架构实践
TypeScript Node.js 全栈工程化与Monorepo架构实践

本专题围绕 TypeScript 在 Node.js 全栈开发中的工程化实践展开,系统讲解 Monorepo 架构设计、包管理策略、模块复用机制以及服务端与前端统一类型系统的构建方法。通过真实项目案例,帮助开发者提升大型全栈项目的可维护性与协作效率。

2026.06.16

438

8

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

96

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

128

19

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

140

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

60

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 20.4万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.6万人学习