想象你住在一栋现代化公寓里,物业公司叫"Kubernetes"。它能帮你统一管理所有住户、公共水电和电梯运行。可是,如果有一天大楼失火、硬盘报废,或者政府要求整栋楼搬到另一个城市,你该怎么办?传统小区只要把保险箱里的文件复印一份就行;云原生小区的问题是——住户数量多、房间变化快、数据分散在各种存储卷里,靠手工复制根本来不及。 于是,小区物业引进了一家专业的“应急搬迁公司”,名字叫 Velero。它不关心你家有几口人,只关心:你的家当有哪些、需要搬到哪、如何在搬迁后立即恢复生活。它负责三件大事:定期盘点并备份所有房间资源、遇到灾难时快速恢复、需要跨城市迁移时整体搬走。它把备份文件放进一个叫“对象存储”的大型档案库,就像搬迁公司把家具存进郊外的仓库。 对 AI 从业者而言,数据是模型的血液,集群是算力的心脏;掌握 Velero,意味着你拥有了让整个云原生系统“起死回生”的关键能力。本文就用“一家应急搬迁公司”的视角,拆解 Velero 的备份与快照原理。

岗位关联

掌握云原生备份与快照(Velero),是 AI/云原生工程师保障数据安全、实现灾备与集群迁移的核心技能,也是生产环境高可用体系的最后一道保险。

目录
  1. 可视化演示
  2. 现代架构演进
  3. Velero 核心功能
  4. 核心架构组件
  5. 工作流程机制
  6. 快照与钩子
  7. 环境依赖配置
  8. 异构云迁移
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态展示Velero备份执行流程、Cron定时调度、恢复拓扑排序与跨集群迁移机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

现代架构演进

从前有一个大家庭,几代人挤在同一个祖宅里。家里的家具、族谱、粮食都放在一起,逢年过节只要请人把整个祖宅的东西装箱搬运一次,就算完成了“备份”。这正是传统单体架构的写照:一个应用包含所有功能,部署在一台服务器上,备份方式简单直接——整机复制即可。

如今,这个大家庭拆散了,各家各户搬进了一栋由 Kubernetes 物业公司管理的高层公寓。每户人家住在一个“容器”里,物业负责调度电梯、分配房间、处理住户流动。这带来一个麻烦:公寓社区里随时有住户搬进搬出,某个服务副本可能从 3 个缩到 1 个,存储卷可能被重新挂载。若还采用整屋复制的老办法,要么搬来一堆已无人居住的空房间,要么漏掉刚入住的新租户。备份的“完整性”因此成了第一要务——如同搬家前必须清点所有住户名单,而不是凭感觉塞几箱东西。

备份完整性的计算逻辑,本质上就是“实际搬走的家当”与“应该搬走的家当”之比:

回看公寓社区的比喻:一个负责任的搬迁公司必须拿着物业的住户总名单逐户核对,每搬走一家就在名单上打一个勾。打完勾后看一眼名单,那些没被勾掉的住户就是备份的缺口。

备份完整性=已成功备份的资源数应备份资源总数×100%\displaystyle \text{备份完整性} = \frac{\text{已成功备份的资源数}}{\text{应备份资源总数}} \times 100\%
公式含义:备份完整性衡量的是备份动作是否覆盖了所有应该保护的内容。完整性低于 100% 意味着某些资源被遗漏,灾难恢复时这些资源将永久丢失。
  1. 累计成功项把备份成功的每一项资源各计一次,得到分子。
    成功数=∑i∈备份成功1\text{成功数} = \sum_{i \in \text{备份成功}} 1
  2. 统计总项分母记录集群中所有应当备份的资源总数。
    应备份总数=∑j∈全部资源1\text{应备份总数} = \sum_{j \in \text{全部资源}} 1
  3. 求百分比两者相除后乘以 100%,得到完整性指标。
    完整性=成功数应备份总数×100%\text{完整性} = \frac{\text{成功数}}{\text{应备份总数}} \times 100\%

Velero 核心功能

应急搬迁公司正式入驻社区后,门口挂着一块招牌,写着三项主营业务:“备份、恢复、迁移”。这三项服务构成了 Velero 的核心功能:集群备份,把整个 K8s 集群的资源对象与数据卷打包归档;集群恢复,在集群损坏或误操作后把归档内容还原成可运行状态;集群迁移,把业务从一个集群原样搬到另一个集群,比如从自建机房搬到云上。

对用户来说,这家公司最诱人的地方是“免费开源”。它由云原生社区维护,依托 Kubernetes 原生的 API 机制工作,因此不需要在应用里嵌入任何代理代码。就像搬家公司不会要求每家每户改造房屋结构,只需要物业提供一份住户清单,就能完成所有搬运工作。

衡量这家公司服务好坏的关键指标,是“断电后多久能重新亮灯”,也就是恢复时间目标:

把应急搬迁公司想象成救火队:从火警响起到扑灭大火、住户重新入住,这段时间越短,社区损失越小。Velero 的价值,就是通过标准化的恢复流程把这段“救火时间”压缩到可控范围。

RTO=t恢复完成−t故障发生\displaystyle RTO = t_{\text{恢复完成}} - t_{\text{故障发生}}
公式含义:RTO(恢复时间目标)指从故障发生到业务完全恢复所经历的时间。RTO 越短,意味着业务停机造成的损失越小。
  1. 记录故障时刻灾难发生时开始计时,对应公式中的被减数。
    t故障发生t_{\text{故障发生}}
  2. 记录恢复时刻业务重新可用时停止计时,对应公式中的减数。
    t恢复完成t_{\text{恢复完成}}
  3. 求时间差两者相减便得到停机的总时长。
    RTO=t恢复完成−t故障发生RTO = t_{\text{恢复完成}} - t_{\text{故障发生}}

核心架构组件

如果我们要给应急搬迁公司画一张组织架构图,会看到四个关键角色。Velero Server 是总调度中心,运行在集群内,负责接收用户命令、编排备份与恢复任务;Node Agent(旧称 Velero Node Agent)是各楼栋的专属管家,它以 DaemonSet 方式驻留在每个节点上,随时准备配合执行数据备份;Restic 是搬家公司的那支“车队”,负责把存储卷里的文件逐一打包上传;对象存储则是城郊的大型仓库,用来长期存放所有备份包。

这四个角色各司其职:用户通过命令行告诉 Velero Server“今天要备份哪个命名空间”,Server 查询 Kubernetes API 获得资源清单,接着调度 Node Agent 启动 Restic 进程,Restic 把数据压缩加密后传送到对象存储桶。整个过程就像搬家公司在物业中心领到任务单,派遣楼栋管家和货车队协同作业。

备份过程会产生大量清单文件和日志文件,这些文件同样占用仓库空间,其整体大小可以估算为:

组织架构图里的每一份职责,最终都服务于一个简单目标:让“家当”安全抵达仓库。调度中心下发指令、楼栋管家确认现场、车队负责运输、仓库负责保管——缺少任何一个角色,备份链条就会断裂。

B=∑i=1nsize(Manifesti)+∑j=1ksize(Logj)\displaystyle B = \sum_{i=1}^{n} \text{size}(\text{Manifest}_i) + \sum_{j=1}^{k} \text{size}(\text{Log}_j)
公式含义:备份总大小等于所有资源清单文件大小与所有备份日志文件大小之和。它可以用来预估对象存储仓库需要预留多少空间。
  1. 累加清单大小每个备份资源都会生成一个清单文件,逐个累加。
    ∑i=1nsize(Manifesti)\sum_{i=1}^{n} \text{size}(\text{Manifest}_i)
  2. 累加日志大小备份执行过程中的日志也逐一计入。
    ∑j=1ksize(Logj)\sum_{j=1}^{k} \text{size}(\text{Log}_j)
  3. 两部分求和清单总量与日志总量相加即是备份总体积。
    B=清单总大小+日志总大小B = \text{清单总大小} + \text{日志总大小}

工作流程机制

一次标准的搬家流程是什么样的?首先,搬迁公司从物业处拿到住户总名单,逐一确认哪些房间需要搬、哪些可以跳过,这就是备份流程中的“资源发现”环节。接着,工人把每户的家具分别装箱,贴上标签打成 tar 包,对应 Velero 把每个命名空间的资源对象序列化归档。最后,车队将包裹运往郊区仓库,同时在仓库登记一份“货物清单”,方便日后查找。

为了让备份不会因遗忘而中断,Velero 提供了调度计划(Schedule)。用户只需说一句“每天晚上 2 点执行一次备份”,Velero 就会像闹钟一样准时启动任务,无需人工干预。仓库管理员还会关心包裹的存放期限,这就是 TTL(Time To Live):备份包在对象存储里只保留指定天数,到期后自动清理,避免仓库被陈年旧货堆满。

一块备份包裹的“保质期”计算方式十分直观:

仓库的“保鲜期”机制保证了备份体系长期健康运转。没有 TTL 的备份仓库,就像从不清理杂物的地下室,总有一天会塞满无用的旧家具,真正需要空间存放新备份时反而无从下手。

t过期=t创建时间+TTL\displaystyle t_{\text{过期}} = t_{\text{创建时间}} + TTL
公式含义:每个备份包的过期时间等于创建时间加上保留时长(TTL)。过期后 Velero 会自动删除对应备份文件。
  1. 记录创建时间备份任务完成时,系统记录当前时间戳。
    t创建时间t_{\text{创建时间}}
  2. 累加保留时长在创建时间上加上配置的 TTL 值。
    t过期=t创建时间+TTLt_{\text{过期}} = t_{\text{创建时间}} + TTL
  3. 触发清理当前时间超出过期时间后,垃圾回收机制删除备份。

快照与钩子

搬迁公司最怕什么?最怕住户的冰箱里还冻着海鲜,而搬家工人却要把冰箱拔掉电源。如果直接搬运,数据可能损坏。此时,专业的搬家公司会使用两种精细化手段:卷快照和钩子。

卷快照(Volume Snapshot) 相当于给冰箱拍一张“瞬时状态的 3D 照片”——不需要关机断电,就能在极短时间内记录磁盘的完整数据状态。Velero 可以通过云厂商的存储快照接口或 CSI 快照驱动完成这一操作,速度快、对业务影响小。备份钩子(Hooks)则像是搬家前的“电话确认”:Pre 钩子在备份前执行,告诉应用“请暂停写入,把内存数据刷到磁盘”;Post 钩子在备份完成后通知应用“可以继续正常工作了”,从而保证备份数据的一致性。

卷快照的耗时直接影响备份窗口,其计算公式为:

钩子和快照的组合,就像给冰箱搬家时既拍了保鲜照片,又提前打电话确认冰箱断电时间——每一个细节都是为了确保数据在“搬运中途”不丢失、不损坏。这也是 Velero 备份区别于简单文件拷贝的关键所在。

Δt快照=t快照完成−t快照触发\displaystyle \Delta t_{\text{快照}} = t_{\text{快照完成}} - t_{\text{快照触发}}
公式含义:快照耗时指从发起快照到快照就绪的时间差。快照耗时越短,对业务的影响越小。
  1. 记录触发时刻Velero 发起快照请求时打上时间戳。
    t快照触发t_{\text{快照触发}}
  2. 记录完成时刻存储系统返回快照就绪信号时打上时间戳。
    t快照完成t_{\text{快照完成}}
  3. 求差值两者相减即为本次快照的耗时。
    Δt快照=t快照完成−t快照触发\Delta t_{\text{快照}} = t_{\text{快照完成}} - t_{\text{快照触发}}

环境依赖配置

任何搬迁公司开张前,都需要先办齐“营业执照”。Velero 的第一张执照,是云厂商凭证——访问对象存储桶和创建卷快照所需的密钥。第二张执照是 Velero 安装,通常一条 velero install 命令即可完成,命令中需要指定 --provider(云厂商)、--bucket(存储桶名称)和 --secret-file(凭证文件路径)。第三张执照是备份存储桶,它是所有备份文件的最终归宿。第四张执照是 node-agent,它以 DaemonSet 形式在每个节点上运行,为 Restic 提供数据搬运能力。

配置齐备之后,一套可用的备份体系才算真正上线。如果缺少云厂商凭证,Velero 连仓库大门都进不去;如果没有指定存储桶,备份包无处安放;如果没有 node-agent,卷数据无法被读取上传。这就像搬家公司既没有货车,也没有仓库钥匙,自然寸步难行。

在实际的迁移工程中,我们常以“迁移完成率”来检查配置与执行是否到位:

“办执照”环节看似繁琐,却是整个备份体系的地基。很多新手在生产环境遇到的备份失败,最终排查下来都是凭证过期、存储桶权限不足或 node-agent 未启动——地基不稳,再豪华的搬家车队也无济于事。

迁移完成率=已成功迁移的资源数总资源数×100%\displaystyle \text{迁移完成率} = \frac{\text{已成功迁移的资源数}}{\text{总资源数}} \times 100\%
公式含义:迁移完成率表示迁移任务执行完毕后,成功搬移到目标集群的资源占比。它既能验证配置的正确性,也能暴露备份遗漏。
  1. 统计迁移成功量数出已成功迁移并验证可用的资源。
    已迁移资源数=∑k∈成功1\text{已迁移资源数} = \sum_{k \in \text{成功}} 1
  2. 统计资源总量清点源集群需要迁移的全部资源。
    总资源数=∑j∈源集群1\text{总资源数} = \sum_{j \in \text{源集群}} 1
  3. 求比例两者相除后乘 100%,获得完成率。
    完成率=已迁移总量×100%\text{完成率} = \frac{\text{已迁移}}{\text{总量}} \times 100\%

异构云迁移

当公司决定从 A 城市搬到 B 城市,即从 AWS 迁到 GCP,或从自建机房迁到云上时,应急搬迁公司遇到了新挑战。跨云迁移时,最常见的坑是跨云快照不可用:AWS 的 EBS 快照无法在 GCP 上直接挂载,就像美国标准的电器插头插不进欧洲的插座。此时,卷快照方案普遍失效,必须退回到文件级备份——用 Restic 把文件逐个打包,再在目标集群重新组装成数据卷。这个过程更通用,但耗时更长。

Velero 的迁移流程通常是这样的:先在源集群执行一次完整备份(包含资源对象与卷数据),然后在目标集群执行 velero restore,把备份包中的内容还原出来。还原时还可以借助命名空间映射功能,把源集群的 ns-a 映射为 ns-b,避免命名冲突。最后一步是必不可少的备份验证:像搬完家后逐屋检查水电一样,工程师需要在目标集群上验证业务 Pod 能正常启动、数据库能正常读写。

跨云迁移最核心的指标是“最多会丢多少数据”,即恢复点目标:

搬家完成后,最重要的不是“东西都到了”,而是“每个东西都能正常使用”。跨云迁移的成功标准,从来不是备份文件复制完毕,而是业务在新城市继续运转如常。RPO 这个指标时刻提醒我们:备份越频繁,丢失的数据窗口越窄,迁移的保险系数越高。

RPO=t故障发生−t最近一次成功备份\displaystyle RPO = t_{\text{故障发生}} - t_{\text{最近一次成功备份}}
公式含义:RPO(恢复点目标)表示从最近一次成功备份到故障发生之间的时间跨度。在这段时间内产生的数据,可能在灾难中丢失。
  1. 记录最近备份时间读取时间戳,找到最后一次成功备份的时刻。
    t最近一次成功备份t_{\text{最近一次成功备份}}
  2. 记录故障时间标记灾难或误操作发生的时刻。
    t故障发生t_{\text{故障发生}}
  3. 求时间差两者相减即得到数据丢失窗口的宽度。
    RPO=t故障发生−t最近一次成功备份RPO = t_{\text{故障发生}} - t_{\text{最近一次成功备份}}

AI 应用场景

数据库版本升级前的全量备份演练

阶段:数据迁移与备份调度

解决的问题:传统做法是人工冷备份,需要停服数小时;如果升级失败,回滚时数据可能已不一致。Velero 在升级前自动完成一次全量备份,升级失败后可在数分钟内恢复到备份点,避免人工操作遗漏。

具体案例:某金融公司计划将生产集群中的 PostgreSQL 数据库从 12 升级到 15。团队在升级窗口前 1 小时创建 Velero 备份计划,包含数据库命名空间及 PVC 数据卷;升级过程中出现兼容性问题后,SRE 执行 velero restore 将数据库整体还原到升级前状态,全程业务中断仅 8 分钟。

多集群容灾与故障注入演练

阶段:故障恢复自动化

解决的问题:单一集群发生地域故障时,业务将全面瘫痪。利用 Velero 的周期性调度备份,可将备份实时同步到异地对象存储;再配合混沌工程工具定期注入故障,验证恢复流程的时效性。

具体案例:某电商平台在主集群之外维护一个灾备集群,每天凌晨通过 Velero Schedule 备份订单数据库 PVC;每个季度执行一次“断网演练”——模拟主集群不可用,运维团队依据演练手册从对象存储恢复数据到灾备集群,并用脚本校验订单表行数与最新订单时间戳,确保 RPO 达标。

Python 演示

python30 行
class BackupAuditor:    """借助 Velero 备份清单统计信息,计算备份完整性指标。"""     def __init__(self):        self.policy_list = []   # 应备份的资源清单        self.done_list = []     # 实际备份成功的资源     def load_expected(self, items):        self.policy_list = list(items)     def load_backup(self, items):        self.done_list = list(items)     def complete_rate(self):        missing_map = {}        need_map = {}        names = set(list(self.policy_list) + list(self.done_list))        for k in names:            need_map[k] = self.policy_list.count(k)            missing_map[k] = max(0, need_map[k] - self.done_list.count(k))        total = sum(need_map.values())        miss = sum(missing_map.values())        return 100.0 * (total - miss) / total if total else 0.0  if __name__ == '__main__':    auditor = BackupAuditor()    auditor.load_expected(['deploy-api', 'svc-api', 'pvc-data', 'cm-config'])    auditor.load_backup(['deploy-api', 'pvc-data'])    print('备份完成率: %.1f%%' % auditor.complete_rate())
目的:模拟 Velero 备份清单校验器,输入“应备份资源”与“实际备份成功资源”,输出备份完整性百分比。
  1. self.policy_list = []存储应备份资源的清单,相当于 Velero 查询 API 得到的资源总名单。
  2. self.done_list = []记录实际备份成功的资源,对应 Velero 备份日志中的成功项。
  3. load_expected` / `load_backup加载预期清单与真实备份结果,类似 velero backup describe 的输入数据。
  4. need_map[k] = self.policy_list.count(k)统计每个资源在应备份清单中出现的次数,允许同名资源多副本存在。
  5. missing_map[k] = max(0, need_map[k] - self.done_list.count(k))计算每个资源的缺失数量,防止同名资源被重复计数后出现负数。
  6. 100.0 * (total - miss) / total if total else 0.0计算备份完整性百分比,如果清单为空则返回 0,避免除零错误。

常见误区

误区我安装了 Velero 之后,它应该只会把 Deployment、Service、ConfigMap 这些“配置”备份下来,PVC 里的数据还得自己另外想办法。

正解Velero 不仅能备份 Kubernetes 资源对象,也支持备份持久卷数据。它通过卷快照(云厂商快照或 CSI 快照)和 Restic 文件级备份两条路径,将 PVC 数据一并纳入备份体系。只用默认命令而不开启卷快照或 Restic,才会出现“只被了配置、丢了数据”的尴尬局面。

为何常见:很多教程演示 Velero 时只展示 velero backup create 命令,没有深入讲解卷快照与 Restic 的配置步骤,初学者误以为资源备份已覆盖全部数据。

误区只要 `velero backup create` 显示 Completed,我就放心了;备份文件在对象存储里躺着,永远不会出问题。

正解备份成功只代表“文件已生成”,不代表“文件能恢复”。存储桶权限变更、备份包损坏、Kubernetes 版本差异都可能导致恢复失败。正确做法是定期执行恢复演练,在临时集群中用备份文件还原一套业务环境并做数据校验,确保备份真正可用。

为何常见:恢复演练需要额外的时间和资源,而备份成功是立刻可见的结果,人们往往倾向于相信“看得见的成功”而忽视“看不见的风险”。

误区既然 AWS 的 EBS 快照不能在 GCP 上挂载,那么跨云迁移就只能放弃数据卷,只迁移 Deployment 等资源。

正解快照确实有厂商锁定问题,但 Velero 提供了 Restic 文件级备份作为通用方案:把卷内文件解包上传,再在目标集群重建数据卷。虽然速度慢一些,但数据完整性和可用性都有保障。部分 CSI 驱动也支持跨云复制快照,可结合具体情况选择。

为何常见:人们习惯用自己最熟悉的方式解决问题,当“快照迁移”这条路走不通时,容易直接放弃整条迁移路径,而忽略文件级备份这个备选方案。

误区Restic 要在每个节点上读取卷里的所有文件,肯定会产生大量 IO 和网络开销,把线上业务拖垮。

正解Restic 的 IO 开销可以精细控制。Velero 支持在备份计划中配置资源配额、限速参数,并可以安排在业务低峰期执行。实际生产实践中,只要合理设置 --resource-limits 和调度时间,Restic 对业务的影响完全可控,而它换来的是跨云迁移所需的通用数据备份能力。

为何常见:人们把“读取大量文件”直接等同于“性能灾难”,忽略了限速、错峰、资源配额等工程手段的调节作用。

面试题

Q1. Velero 的核心备份对象是什么?

单选题 · easy

  • A.磁盘上的 Restic 仓库
  • B.Kubernetes 资源及卷数据← 正确答案
  • C.云平台上的虚拟机镜像
  • D.容器镜像仓库里的镜像

答案:B。Velero 备份的是 Kubernetes 资源对象(Deployment、Service 等)以及持久卷数据(通过快照或 Restic 实现)。它不备份宿主机镜像仓库,也不负责容器镜像本身,那属于镜像仓库系统的工作。

Q2. 备份文件最终存放的“郊区大仓库”是?

单选题 · easy

  • A.Kubernetes 的 etcd
  • B.对象存储服务桶← 正确答案
  • C.本地磁盘缓存
  • D.运维人员的电脑

答案:B。Velero 的备份包默认上传到对象存储桶,如 AWS S3、阿里云 OSS 等。etcd 是集群状态数据库,不是备份仓库;本地缓存只是临时中转,不是最终归宿。

Q3. Schedule 中 TTL 参数的直接作用是什么?

单选题 · mid

  • A.提升备份执行速度
  • B.决定备份文件保留时间← 正确答案
  • C.压缩备份数据体积
  • D.限制备份网络带宽

答案:B。TTL(Time To Live)表示备份文件在对象存储中的保留时长,到期后自动清理。它不控制备份速度、压缩率或带宽,只负责“仓库货架上的包裹放多久”。

Q4. 下列哪些内容属于 Velero 的备份对象?

多选题 · mid

  • A.节点的操作系统内核
  • B.PVC 上的业务数据← 正确答案
  • C.Kubernetes 资源对象← 正确答案
  • D.集群外数据库记录

答案:BC。Velero 备份范围为集群内的资源对象与持久卷数据。节点操作系统属于基础设施,不归 Velero 管理;集群外数据库记录需要额外工具或链路接入,不在默认备份范围内。

Q5. Pre 备份钩子最适合在何时执行?

单选题 · mid

  • A.数据卷快照完成之后
  • B.应用容器暂停写入之前← 正确答案
  • C.对象存储清理之后
  • D.恢复到新集群之时

答案:B。Pre 钩子在备份开始前执行,目的是让应用完成内存数据落盘、暂停写入等操作,从而保证备份数据的一致性。在快照完成之后执行就失去了意义。

Q6. 关于 Velero 备份与恢复钩子,正确的说法有哪些?

多选题 · mid

  • A.Pre 备份钩子用于备份前的业务处理← 正确答案
  • B.Post 备份钩子用于快照完成后的处理← 正确答案
  • C.恢复钩子用于新集群数据校验← 正确答案
  • D.钩子只能在本地集群使用

答案:ABC。Pre/Post 备份钩子分别服务于备份前后,恢复钩子则可在 Pod 恢复后执行自定义命令,例如校验数据库可读性。钩子同样适用于跨集群恢复场景,因此 D 错误。

Q7. 跨云迁移时快照方案普遍不可用的主要原因是?

单选题 · hard

  • A.快照文件体积过大
  • B.云厂商存储格式不兼容← 正确答案
  • C.快照上传速度过慢
  • D.快照没有加密保护

答案:B。云厂商的卷快照与底层存储强绑定,例如 EBS 快照无法在 GCP 直接挂载,格式不兼容导致跨云无法直接使用。体积、速度、加密都不是跨云迁移的根本障碍。

Q8. 恢复时命名空间冲突的推荐解法是?

单选题 · hard

  • A.删除目标集群的全部资源
  • B.使用命名空间映射功能← 正确答案
  • C.恢复前重启 kubelet
  • D.修改 PV 的存储类

答案:B。Velero 支持在 restore 时通过命名空间映射,将源集群命名空间映射为目标集群的另一个命名空间,从而避免资源抢占。删除全部资源过于粗暴,重启 kubelet 与存储类修改均不能解决命名冲突。

Q9. 关于 Velero 备份生命周期,正确的说法包括哪些?

多选题 · extreme

  • A.TTL 到期自动清理存储桶对象← 正确答案
  • B.备份成功后可以手动删除← 正确答案
  • C.恢复演练不影响原备份← 正确答案
  • D.备份文件只能保留一份

答案:ABC。Velero 依据 TTL 自动清理过期备份,也允许用户手动删除指定备份;恢复操作只是读取备份文件生成新资源,不会破坏原备份。备份仓库可以同时保留多份历史备份,因此 D 错误。

Q10. 应备份资源共 20 项,实际成功 18 项,备份完整性是多少?

单选题 · mid

  • A.90%← 正确答案
  • B.85%
  • C.95%
  • D.80%

答案:A。备份完整性等于成功备份数除以应备份总数,即 18 ÷ 20 = 90%。这个指标提醒我们:只要有两个资源被遗漏,灾难恢复时就有 10% 的业务数据面临永久丢失风险。