Skip to content
Kubernetes 发布与排障主线 · 第 2 篇 / 共 4 篇
领域运维与部署
专题Kubernetes 专题
当前序列Kubernetes 发布与排障主线
阅读位置第 2 篇 / 共 4 篇当前专题第 2 个序列 / 共 3 个序列

RollingUpdate、Blue Green、Canary 怎么选

先说结论

  • 默认最常用的是 RollingUpdate,适合大多数普通服务
  • 如果回滚速度要求非常高、切换窗口明确,Blue Green 更稳
  • 如果更关注灰度验证、风险收敛和逐步放量,Canary 更合适

一、三种策略分别在解决什么

1. RollingUpdate

它解决的是“不中断服务地逐步替换旧版本”。

优点:

  • 原生支持
  • 成本低
  • 运维复杂度小

代价:

  • 新旧版本会并存一段时间
  • 出问题时回滚不是最快
  • 对兼容性要求更高

2. Blue Green

它解决的是“新旧版本完全隔离,切流时一次切换”。

优点:

  • 环境边界清晰
  • 回滚快
  • 适合大版本切换

代价:

  • 资源成本高
  • 环境维护复杂
  • 数据和外部依赖兼容要提前考虑

3. Canary

它解决的是“先让少量真实流量验证新版本”。

优点:

  • 风险收敛最细
  • 适合核心链路
  • 便于观察真实流量表现

代价:

  • 需要更成熟的流量控制和监控
  • 发布链路更复杂
  • 指标和回滚策略要求更高

二、选的时候最该看哪三个问题

1. 回滚要多快

如果一分钟内就必须切回旧版本,Blue Green 往往更占优。

2. 新旧版本能不能共存

如果新旧版本协议、缓存、数据库结构不完全兼容,RollingUpdate 的风险会更高。

3. 有没有灰度能力

如果你已经有网关、服务网格或流量路由能力,Canary 的价值会更明显;如果没有,直接上 Canary 往往只会把发布链路搞复杂。

三、几类典型场景怎么选

1. 普通内部服务

大多数情况下,RollingUpdate 就够用。

2. 核心交易服务

更适合 Canary,先用少量真实流量验证关键指标。

3. 门户、活动页、大版本切换

如果切换窗口明确且回滚要快,Blue Green 会更稳。

四、最容易踩的坑

1. 只改发布策略,不补监控

没有错误率、RT、实例健康、关键业务指标,灰度和回滚都很难做准。

2. 数据库变更没兼容就做 RollingUpdate

新旧版本并存时最容易出问题的,往往不是 Pod,而是 schema 和数据写法。

3. Canary 只有流量切分,没有明确回滚阈值

灰度流量放出去了,但什么情况下回滚、看哪些指标、观察多久都没定义,最后会很被动。

总结

RollingUpdate、Blue Green、Canary 没有绝对最优,核心是看你更在意什么:简单稳定、回滚速度,还是灰度验证。大多数服务先用 RollingUpdate,关键链路逐步补 Canary,明确切换窗口的服务考虑 Blue Green,会更现实。

延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读StatefulSet、PVC、StorageClass 怎么理解适合把网络、发布策略、持久化和 Pod 故障排查放到一起看。Kubernetes 专题 · Kubernetes 发布与排障主线同一序列 · 顺着当前主线继续读Pod Pending 和 CrashLoopBackOff 怎么排查适合把网络、发布策略、持久化和 Pod 故障排查放到一起看。Kubernetes 专题 · Kubernetes 发布与排障主线同专题其他序列 · 共享标签:选型对比、部署交付ConfigMap、Secret、Volume 和环境变量怎么选适合把 Deployment、Service、ConfigMap、资源限制和探针放在一起看。Kubernetes 专题 · Kubernetes 核心对象与资源治理同专题其他序列 · 共享标签:部署交付节点污点、亲和性和拓扑 spread 怎么组合适合把命名空间、回滚、PDB、HPA、Mesh 和调度约束放在一条 Kubernetes 治理主线上整理。Kubernetes 专题 · Kubernetes 编排约束与交付治理跨专题关联 · 共享标签:选型对比、部署交付灰度、蓝绿、滚动发布到底怎么选:以及上线失败后怎么回滚适合沿着流水线设计、自动部署、发布策略、数据库变更和多环境治理这条线往下读。CI/CD 与发布治理专题 · CI/CD 与发布治理跨专题关联 · 共享标签:选型对比、部署交付cron 和 systemd timer 怎么选适合把进程、负载、I/O 和定时任务放在一起看。Linux 与服务器治理专题 · Linux 性能分析与系统时钟
继续阅读Kubernetes 发布与排障主线当前序列第 2 篇 / 共 4 篇当前专题第 2 个序列 / 共 3 个序列
往前看
上一篇Ingress、Service 和集群网络链路怎么串起来看回到当前序列上一章上一序列Kubernetes 核心对象与资源治理从第 1 篇开始:Pod、Deployment、Service 到底怎么协作
往后看
下一篇StatefulSet、PVC、StorageClass 怎么理解继续当前序列下一章下一序列Kubernetes 编排约束与交付治理从第 1 篇开始:Namespace、Label 和 Annotation 该怎么分工

把零散经验整理成可查、可复用、可持续更新的企业级知识门户