3、资源边界概念:Kubernetes资源边界定义、命名空间边界、集群级别资源与命名空间级别资源
在云原生灾备准入策略评审中,资源边界是决定备份范围、恢复粒度与权限控制的核心逻辑单元。Kubernetes 的资源模型天然划分为集群级别与命名空间级别,Velero 的备份与恢复操作必须严格遵循这一边界,否则会导致资源遗漏、权限冲突或恢复失败。
3.1 资源边界定义
Kubernetes 资源边界由 API 资源的 Scope 属性决定,分为两类:
| 边界类型 | API 资源示例 | 作用范围 | Velero 备份行为 |
|---|---|---|---|
| 集群级别资源 | Namespace、Node、PersistentVolume、ClusterRole、ClusterRoleBinding、StorageClass、CustomResourceDefinition | 整个集群,不隶属于任何命名空间 | 需显式指定 --include-cluster-resources 或使用专用备份作用域 |
| 命名空间级别资源 | Pod、Service、ConfigMap、Secret、Deployment、StatefulSet、PersistentVolumeClaim、Role、RoleBinding | 仅限所属命名空间 | 默认按命名空间筛选,支持多命名空间备份 |
关键原则:Velero 的备份作用域必须与资源边界对齐。跨边界操作(如将集群级别资源恢复到不同集群)需要额外的准入策略与权限映射。
3.2 命名空间边界
命名空间是 Kubernetes 中最常用的资源隔离边界,也是 Velero 灾备策略的基本操作单元。命名空间边界决定了:
- 备份范围:Velero 可以按单个命名空间、多个命名空间或排除特定命名空间进行备份。
- 恢复隔离:恢复操作默认保持命名空间不变,支持跨命名空间恢复(需启用
--namespace-mappings)。 - 权限控制:RBAC 角色绑定在命名空间级别生效,Velero 备份 Pod 必须拥有对应命名空间的
get、list、watch权限。
最佳实践:在灾备准入策略中,建议将命名空间作为最小备份单元。对于多租户集群,每个租户的命名空间应独立备份,避免租户间数据交叉。
3.3 集群级别资源与命名空间级别资源对比
理解两类资源的差异,是设计灾备准入策略的前提。以下从多个维度进行对比:
| 对比维度 | 集群级别资源 | 命名空间级别资源 |
|---|---|---|
| 生命周期 | 独立于命名空间,删除命名空间不影响集群资源 | 随命名空间创建/删除而创建/删除 |
| 唯一标识 | 全局唯一名称 | 命名空间内唯一名称 |
| 备份频率 | 通常较低(基础设施层变更少) | 较高(业务应用频繁变更) |
| 恢复风险 | 高(可能影响集群全局状态) | 低(影响范围可控) |
| 准入策略要求 | 需严格审批,避免覆盖集群关键配置 | 按命名空间策略自动执行 |
3.4 资源边界与 Velero 备份作用域的关系
Velero 的备份作用域直接映射到 Kubernetes 资源边界。以下 SVG 图展示了 Velero 备份操作中资源边界的划分与交互关系:
3.5 资源边界在灾备准入策略中的映射
在 Velero 灾备准入策略评审中,资源边界直接映射为以下策略规则:
- 集群级别资源策略:必须通过
ClusterPolicy或BackupStorageLocation级别的准入控制,只有具备集群管理员权限的角色才能触发包含集群资源的备份。 - 命名空间级别资源策略:通过
NamespacePolicy或ResourceQuota级别的准入控制,允许命名空间管理员自主备份本命名空间内的资源。 - 混合边界策略:当备份同时包含集群级别和命名空间级别资源时,准入策略必须分别校验两类资源的权限,并记录审计日志。
常见陷阱:部分用户误以为 Velero 的
--include-cluster-resources 会自动包含所有命名空间资源。实际上,该参数仅控制集群级别资源,命名空间资源仍需通过 --namespaces 或 --include-namespaces 显式指定。两者是正交的备份维度。
3.6 资源边界与审计日志的关联
审计日志必须记录每次备份操作所涉及的资源边界信息,以便事后追溯与合规审查。关键审计字段包括:
| 审计字段 | 说明 | 示例值 |
|---|---|---|
scope |
备份作用域类型 | cluster / namespace / mixed |
cluster_resources |
是否包含集群级别资源 | true / false |
namespaces |
涉及的命名空间列表 | ["production","staging"] |
resource_types |
备份的资源类型清单 | ["Deployment","ConfigMap","ClusterRole"] |
boundary_violation |
是否存在跨边界操作 | false |
通过上述字段,审计人员可以快速判断备份操作是否超出了预定义的资源边界,从而触发告警或阻断。