1. 课程导论:蓝绿发布与灾备切换的背景、目标与课程整体架构

1.1 为什么需要蓝绿发布与灾备自动化?

在云原生生产环境中,应用发布与基础设施故障是导致服务中断的两大核心诱因。传统滚动更新(Rolling Update)虽然能逐步替换实例,但在版本回退速度、流量精细控制、以及跨集群灾备切换方面存在明显短板。蓝绿发布与灾备自动化故障切换正是为解决这些痛点而设计。

核心痛点: 一次错误的灰度发布可能导致全站 503;一个可用区断电可能导致整个业务集群不可用。蓝绿发布提供“瞬时切换”的发布安,灾备自动化则提供“分钟级恢复”的故障兜底能力。

1.2 蓝绿发布 vs 滚动更新 vs 金丝雀发布

对比维度 蓝绿发布 滚动更新 金丝雀发布
切换速度 秒级(Service 切换) 分钟级(逐步替换) 分钟级(流量比例调整)
回退速度 秒级(切回旧 Service) 分钟级(反向滚动) 秒级(流量比例归零)
资源占用 双倍(绿/蓝两套) 1x + 缓冲 1x + 少量金丝雀
流量控制粒度 全量/全无 按 Pod 逐步 按百分比/Header
适用场景 核心服务、数据库迁移 常规无状态应用 A/B 测试、灰度验证

1.3 灾备自动化的关键目标

  • RTO(Recovery Time Objective)< 5 分钟: 从故障发生到业务完全恢复的时间窗口。
  • RPO(Recovery Point Objective)≈ 0: 数据丢失量趋近于零,依赖实时同步与持久卷快照。
  • 故障自愈闭环: 无需人工介入,系统自动完成“故障检测 → 流量切换 → 健康确认 → 通知告警”全流程。
  • 多集群/多可用区容灾: 支持同城双活、异地灾备等拓扑。

1.4 课程整体架构图

下图展示了本课程的知识体系与实验路径:从基础概念出发,逐步深入到蓝绿发布实现、灾备切换自动化、以及生产级最佳实践。

课程整体架构图 K8s 核心概念 Service/Ingress 健康检查探针 蓝绿发布实现:Service 切换 · 双环境管理 · 自动化脚本 灾备自动化故障切换:多集群 · 流量调度 · 数据同步 生产级最佳实践:监控 · 告警 · 混沌工程 · 成本优化

1.5 课程模块与实验清单

模块 核心内容 实验环境
模块一:基础篇 K8s 网络模型、Service 原理、Ingress 控制器、Pod 健康检查 Minikube / Kind
模块二:蓝绿发布 双 Service 切换、ConfigMap/Secret 环境隔离、自动化回滚脚本 K8s 1.28+
模块三:灾备切换 Velero 备份恢复、ClusterAPI 多集群管理、DNS/Global Load Balancer 切换 双集群(云厂商 / 本地)
模块四:自动化与混沌 Argo Workflows 编排、LitmusChaos 故障注入、Prometheus + Alertmanager 联动 已有集群 + 监控栈
模块五:生产实战 成本模型、容量规划、发布工单系统集成、SLA 验证 生产级模拟环境

1.6 蓝绿发布与灾备切换的核心流程对比

下面这张 SVG 图从“发布”和“灾备”两个维度,对比了蓝绿切换与故障切换的流程差异,帮助理解两者的本质区别。

蓝绿发布 vs 灾备故障切换 流程对比 蓝绿发布流程 ① 部署新版本(绿环境) ② 验证绿环境健康 ③ 切换 Service 指向绿环境 ④ 保留蓝环境用于快速回退 灾备故障切换流程 ① 故障检测(探针/指标异常) ② 确认备用集群/环境就绪 ③ 切换 DNS / 全局负载均衡 ④ 数据一致性校验 + 告警通知
学习建议: 本课程前 5 章聚焦“蓝绿发布”的纯 K8s 原生实现,后 5 章转向“灾备自动化”的多集群编排。建议先掌握 Service 与 Ingress 的流量转发原理,再进入自动化脚本编写环节。

1.7 课程前置知识要求

  • 熟悉 K8s 基本概念:Pod、Deployment、Service、Namespace。
  • 具备基本的 YAML 编写与 kubectl 操作能力。
  • 了解 Linux 网络基础(DNS、负载均衡、TCP 连接)。
  • (可选)有 CI/CD 流水线使用经验。
注意: 本课程所有实验均可在本地 Minikube 或 Kind 集群中完成,但灾备切换模块需要至少两个集群(可通过云厂商免费试用或本地虚拟机搭建)。请提前准备好集群环境。