3. 控制平面灾备准入定义
3.1 什么是控制平面灾备准入
控制平面灾备准入(Control Plane Disaster Recovery Admission)是指在 Kubernetes 集群的 控制平面组件(如 kube-apiserver、etcd、controller-manager、scheduler)发生故障或数据丢失时,通过预定义的策略和机制,在备份恢复操作执行之前对资源、配置、依赖关系进行验证与拦截的一套规则体系。它位于灾备流程的入口层,确保只有符合集群一致性要求的备份和恢复请求才能被允许执行。
核心定义:准入是灾备操作的第一道防线,在 Velero 备份或恢复请求到达实际存储或 API 操作之前,对请求内容进行合法性、完整性和安全性的校验。
控制平面灾备准入包含三个关键维度:
- 资源准入:验证备份或恢复的资源对象是否属于控制平面核心组件(如 Namespace、ClusterRole、CRD)。
- 状态准入:检查集群当前状态是否允许执行灾备操作(如 etcd 是否健康、API Server 是否可写)。
- 策略准入:根据预定义的灾备策略(如备份频率、保留周期、恢复优先级)对请求进行过滤或标记。
3.2 为什么需要准入控制
在 Kubernetes 灾备场景中,缺乏准入控制会导致以下严重问题:
| 风险类别 | 具体问题 | 后果 |
|---|---|---|
| 数据不一致 | 备份了部分资源但遗漏了依赖的 CRD 或 RBAC 配置 | 恢复后集群无法正常工作,资源引用断裂 |
| 版本冲突 | 恢复的资源版本与目标集群 API 版本不兼容 | API Server 拒绝写入,恢复失败 |
| 安全漏洞 | 备份中包含敏感 Secret 或 ServiceAccount 令牌 | 数据泄露,权限滥用 |
| 资源冲突 | 恢复的资源与现有资源同名或同 UID | 资源覆盖或冲突,集群状态异常 |
| 存储溢出 | 无限制的备份请求导致存储空间耗尽 | 备份失败,影响其他业务 |
关键认知:没有准入控制的灾备系统,本质上是一个“盲操作”系统。Velero 虽然提供了基础的备份恢复能力,但无法自动识别控制平面特有的依赖关系和一致性约束。准入控制正是弥补这一缺陷的核心机制。
准入控制带来的核心价值:
- 预防性保护:在灾备操作执行前拦截错误,避免“先破坏再修复”的被动模式。
- 一致性保障:确保备份集和恢复集在逻辑上完整,满足控制平面组件的依赖关系。
- 策略执行:将灾备策略(如备份保留周期、恢复优先级)固化为可执行的准入规则。
- 审计与合规:记录所有准入决策,为灾备审计提供可追溯的证据链。
3.3 准入策略在灾备中的角色
准入策略在控制平面灾备中扮演 策略执行引擎 的角色,它将抽象的灾备需求转化为具体的、可执行的规则。以下是准入策略在灾备全生命周期中的具体角色:
准入策略在灾备中的具体角色可归纳为以下五个核心职能:
| 角色 | 职责描述 | 典型策略示例 |
|---|---|---|
| 过滤器 | 根据资源类型、标签、命名空间等属性,决定哪些资源可以进入备份或恢复流程 | 仅备份带有 backup=true 标签的 Namespace |
| 校验器 | 检查资源的结构完整性、版本兼容性、依赖关系是否满足 | 备份 CRD 时必须同时备份对应的 CR 实例 |
| 策略执行器 | 将灾备策略(如保留周期、备份频率、存储位置)固化为准入规则 | 超过 7 天的备份集不允许恢复 |
| 安关 | 防止敏感数据泄露、权限滥用、恶意操作 | 禁止备份包含 kube-system 中的 Secret |
| 审计记录器 | 记录所有准入决策,生成可追溯的审计日志 | 每次准入决策记录时间、操作人、资源、结果 |
实践建议:在 Velero 环境中,准入策略可以通过 Admission Webhook(MutatingWebhookConfiguration / ValidatingWebhookConfiguration)或 Velero 插件机制 实现。推荐优先使用 ValidatingWebhook 进行资源校验,使用 MutatingWebhook 进行策略注入(如自动添加备份标签)。
准入策略与控制平面灾备的关系可以用以下公式概括:
灾备可靠性 = 备份工具能力 × 准入策略覆盖率 × 策略执行一致性
其中,准入策略覆盖率决定了灾备系统能够拦截多少潜在风险,策略执行一致性决定了准入规则是否被稳定、无偏差地执行。
其中,准入策略覆盖率决定了灾备系统能够拦截多少潜在风险,策略执行一致性决定了准入规则是否被稳定、无偏差地执行。