2. Kubernetes 灾备基础:灾备概念(RPO/RTO)、K8s 集群备份恢复工具(Velero)、灾备策略设计原则
2.1 灾备核心概念:RPO 与 RTO
在云原生环境中,灾备策略的设计首先需要明确两个关键指标:恢复点目标(RPO)和恢复时间目标(RTO)。这两个指标直接决定了备份频率、恢复流程以及资源投入的等级。
| 指标 | 定义 | K8s 场景示例 | 影响 |
|---|---|---|---|
| RPO | 允许丢失的最大数据量(时间跨度) | 每 15 分钟备份一次 etcd 和 PV 数据 | 决定备份频率与存储成本 |
| RTO | 从故障发生到业务恢复的最大允许时间 | 30 分钟内完成集群重建和数据挂载 | 决定恢复流程自动化程度与资源预留 |
策略对齐提示:在 Gatekeeper 准入策略中,RPO/RTO 应作为
ConstraintTemplate 的输入参数,强制要求每个命名空间声明其灾备等级(如 Gold/Silver/Bronze),从而自动匹配对应的备份策略和恢复 SLA。
2.2 K8s 集群备份恢复工具:Velero
Velero 是当前 Kubernetes 生态中最主流的开源备份恢复工具,由 VMware 维护。它支持对集群资源对象和持久化卷(PV)数据进行统一备份,并可将备份数据存储到 S3、Azure Blob、GCS 等对象存储后端。
2.2.1 Velero 核心架构
下图展示了 Velero 在 Kubernetes 集群中的组件交互与数据流关系:
2.2.2 Velero 常用操作示例
以下命令展示了 Velero 的基本备份与恢复流程:
# 创建定时备份(每6小时一次,保留7天)
velero schedule create daily-backup \
--schedule="0 */6 * * *" \
--ttl=168h \
--include-namespaces=production
# 手动触发一次备份
velero backup create manual-backup-20250321 \
--include-namespaces=staging \
--snapshot-volumes=true
# 从指定备份恢复
velero restore create --from-backup manual-backup-20250321 \
--namespace-mappings staging:recovery-staging
# 查看备份状态
velero backup get
权限变更风险提示:Velero 需要
ClusterRole 级别的权限来读取集群资源。在 Gatekeeper 策略中,必须严格限制 Velero 的 ServiceAccount 只能访问被授权的命名空间,防止备份操作成为权限提升的跳板。
2.3 灾备策略设计原则
在 Kubernetes 环境中设计灾备策略时,应遵循以下五项核心原则,这些原则将直接映射到后续的准入策略规则中:
- 分层分级原则:根据业务重要性(Critical / Important / Normal)设定不同的 RPO/RTO 目标,避免“一刀切”导致资源浪费或保护不足。
- 数据与配置分离原则:集群资源对象(Deployment、ConfigMap、Secret)与持久化数据(PV)应使用不同的备份策略和存储后端,降低恢复复杂度。
- 最小权限原则:备份工具(如 Velero)的 ServiceAccount 仅授予其工作命名空间的最小必要权限,禁止使用
cluster-admin绑定。 - 可验证原则:每次备份完成后应自动触发恢复演练(如恢复到隔离命名空间),验证备份数据的完整性和可用性。
- 不可变基础设施原则:集群组件应尽量使用 GitOps 管理,灾备恢复时优先通过声明式配置重建环境,再恢复有状态数据。
2.4 灾备等级与策略映射
下表展示了不同灾备等级对应的典型策略参数,这些参数将作为 Gatekeeper 策略的输入约束:
| 灾备等级 | RPO | RTO | 备份频率 | 保留周期 | 恢复演练 |
|---|---|---|---|---|---|
| Gold | ≤ 15 分钟 | ≤ 30 分钟 | 每 15 分钟 | 30 天 | 每周自动 |
| Silver | ≤ 1 小时 | ≤ 2 小时 | 每小时 | 14 天 | 每月自动 |
| Bronze | ≤ 24 小时 | ≤ 8 小时 | 每天 | 7 天 | 每季度手动 |
策略落地要点:在 Gatekeeper 的
ConstraintTemplate 中,可以定义 disaster_recovery_level 作为标签约束,要求每个命名空间必须设置 dr-level: gold|silver|bronze,然后通过 data.inventory 检查 Velero Schedule 的备份频率是否满足对应等级的要求。不满足时,拒绝创建或更新操作。
2.5 灾备策略与准入策略的关联
本章的灾备基础概念为后续的准入策略评审提供了明确的判断依据。在 Gatekeeper 策略中,我们需要验证以下关键点:
- 每个命名空间是否声明了灾备等级标签
- Velero Schedule 的备份间隔是否满足该等级的最小 RPO 要求
- 备份保留策略(TTL)是否满足保留周期要求
- Velero 的 ServiceAccount 是否绑定了超出必要范围的 ClusterRole
- 恢复操作是否仅限于指定的恢复命名空间,防止数据泄露
通过将灾备策略设计原则转化为可执行的准入规则,可以实现云原生环境下的自动化灾备合规管控,降低因配置错误或权限滥用导致的恢复失败风险。