讲师中心 微信公众号
AI工具推荐 视频效率加速

如何用Kubernetes实现滚动部署

浅敏君_5920

浅敏君_5920

发布时间:2026-09-30 06:37:48

|

328人浏览过

|

来源于php中文网

原创

Deployment滚动更新由spec.template变更自动触发:控制器比对期望与实际状态,一旦Pod模板(如镜像、环境变量)变化,即创建新ReplicaSet并按maxSurge/maxUnavailable策略逐步替换旧Pod,全程需正确配置readinessProbe以确保流量平滑切换。

如何用kubernetes实现滚动部署

滚动部署在 Kubernetes 中不是“手动执行”的操作,而是 Deployment 控制器根据 Pod 模板变更自动触发的协调过程;只要你改了 spec.template(比如镜像、环境变量、启动参数),Kubernetes 就会按策略逐步替换旧 Pod —— 但前提是配置得当,否则可能卡住、中断流量或扩缩失控。

Deployment 的滚动更新是如何被触发的

Deployment 本身不轮询或监听变化,它依赖控制器循环比对当前状态与期望状态。只要 spec.template 字段发生任何结构性变更(哪怕只是加了一个空格或改了注释),就会生成一个新的 ReplicaSet,并开始滚动过程。

  • kubectl set image deployment/my-app container-name=new-image:v1.2 是最常用触发方式,它本质是 patch 更新 spec.template.spec.containers[*].image
  • 直接 kubectl apply -f deploy.yaml 也能触发,但必须确保 YAML 文件中 spec.template 确实有变更;GitOps 工具如 Argo CD 也是靠检测 Git 中该字段差异来驱动
  • 注意:metadata.annotations 或 spec.replicas 变更不会触发滚动更新,只会扩缩或打标,这点常被误认为“更新没生效”

为什么新 Pod 启动了却收不到流量?

根本原因通常是缺失或配置错误的 readinessProbe。Service 的 endpoints 列表由 EndpointSlice 控制器维护,它只把通过 readiness 探针的 Pod 加入列表 —— 即使 Pod 状态是 Running,若探针未就绪,就不会被路由流量。

Kubernetes Security Posture Scorecard
Kubernetes Security Posture Scorecard

评估 Kubernetes 集群安全态势,覆盖 RBAC、工作负载安全、网络策略、基础设施即代码(IaC)、运行时监控和密钥管理等 30 项控制项……

下载
  • HTTP 探针示例:readinessProbe.httpGet.path 必须返回 HTTP 200,且路径要真实存在(比如 /healthz 而非 /)
  • initialDelaySeconds 要大于应用实际冷启动耗时,否则探针过早失败会导致 Pod 反复重启
  • 避免用 exec 探针调外部命令(如 curl),它依赖容器内工具链,增加不可控性
  • 没配探针时,Pod 一进入 Running 状态就被加入 endpoints,极易导致 5xx 请求 —— 这是生产环境最常见“零停机”失效原因

maxSurge 和 maxUnavailable 怎么设才不翻车

这两个参数控制滚动节奏,直接影响可用性与资源开销。默认值 maxSurge=25%、maxUnavailable=25% 对多数场景偏保守,但盲目调高可能引发雪崩。

  • 若应用内存敏感(如 Java 应用),maxSurge 设太高会导致节点资源瞬时超卖,触发 OOMKilled;建议先压测单 Pod 资源占用,再反推安全并发数
  • 对于强一致性服务(如订单写入),maxUnavailable=0 可保副本不减,但要求至少有 1 个额外 Pod 容量(即 maxSurge > 0),否则滚动会卡住
  • 设 maxSurge=0 意味着“先删后建”,等效于 Recreate 策略,完全失去滚动意义;除非你明确接受短暂中断
  • 线上建议用整数而非百分比(如 maxSurge: 1),避免副本数少时计算结果为 0(例如 replicas=2 时 25% = 0.5 → 向下取整为 0)

滚动中怎么确认是否真正完成

别只看 kubectl get deploy 显示 AVAILABLE,那只是副本数达标;真正要验证的是:所有新 Pod 就绪、旧 ReplicaSet 已缩容为 0、且 Service 流量已全部切走。

  • 检查新 RS:运行 kubectl get rs -l app=my-app,确认只有一个 RS 的 DESIRED 等于副本数,其余 RS 的 CURRENT 为 0
  • 确认旧 Pod 彻底消失:kubectl get pods -l app=my-app --show-labels | grep -v new-pod-hash,应无输出
  • 观察 endpoint:运行 kubectl get endpoints my-app -o wide,IP 列应全是新 Pod 的 IP,且数量匹配
  • 关键陷阱:kubectl rollout status 默认只等 Pod Ready,不校验 probe 成功率或业务指标;高风险发布建议配合 curl -f http://service/health 做 post-rollout 验证

滚动部署真正的复杂点不在“怎么起新 Pod”,而在于如何让新旧 Pod 在生命周期交叠期互不干扰 —— 探针配置、连接优雅关闭、下游重试机制、以及监控能否及时捕获 5xx 上升趋势,这些才是决定一次发布成败的关键。Kubernetes 只提供机制,不保证语义正确性。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

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

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

116

2025.12.22

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

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

168

2026.06.29

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

0

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

0

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

0

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

0

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

200

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

120

2026.09.23

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn