ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Velero 恢复任务查询指南:ark/velero get restores 命令详解与源码解析

Velero 恢复任务查询指南:ark/velero get restores 命令详解与源码解析 Velero 恢复任务查询指南ark/velero get restores 命令详解与源码解析【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本指南以 site/content/docs/v0.7.1/cli-reference/ark_get_restores.md 为骨架系统讲解 Velerov0.7.1 时期名为 Ark中用于列出与查询 Restore 恢复任务的ark get restores命令从命令语法、全部可用 Flag 的语义与默认值到输出列的构成、标签筛选与 JSON/YAML 结构化输出的实际用法并结合当前仓库中该命令的 Go 实现源码与测试用例说明其底层调用链与执行原理。读者读完本文将能熟练使用该命令完成恢复任务的查询、筛选、格式化输出并理解其与 Kubernetes API 的交互方式。一、命令概览与使用场景ark get restores是 Velero 早期版本当时项目名称为 Heptio Arkv0.7.1提供的 CLI 子命令用于获取集群中已创建的所有 Restore恢复任务。在后续版本中该项目更名为 Velero命令随之演变为velero restore get对应文档 ark_restore_get.md。该命令的核心使用场景包括恢复任务巡检查看集群中全部或指定恢复任务及其当前状态判断恢复是否成功、是否产生错误与警告恢复结果核验配合ark restore describeark_restore_describe.md与ark restore logsark_restore_logs.md排查恢复失败原因自动化集成通过--output json/yaml将恢复任务列表输出为结构化数据供脚本或 CI/CD 流程解析。二、命令语法ark get restores [flags]同时ark get restores也是ark get命令的子命令。ark get见 ark_get.md负责获取 Ark 资源其下挂载了三个子命令ark get backups — 获取备份列表ark get restores— 获取恢复列表ark get schedules — 获取备份计划列表因此在 v0.7.1 中ark get restores与ark restore get见 ark_restore_get.md提供等价功能两条命令均可使用。三、命令 Flag 详解3.1 本命令专属 OptionsFlag简写类型默认值说明--help-hbool—显示命令帮助信息--label-columns—stringArray空逗号分隔的标签列表将指定的标签以独立列的形式展示在输出表格中--output-ostringtable输出显示格式可选值为table、json、yaml--selector-lstring空标签选择器label selector只显示匹配该选择器的恢复任务--show-labels—boolfalse在输出表格的最后一列展示标签3.2 继承自父命令的 Options以下参数继承自ark根命令用于配置日志输出、Kubernetes 连接等通用行为Flag简写默认值说明--alsologtostderr——同时将日志输出到标准错误与日志文件--kubeconfig—空连接 Kubernetes apiserver 所使用的 kubeconfig 文件路径若未设置则依次尝试环境变量KUBECONFIG与集群内配置--log_backtrace_at—:0当日志命中file:N时输出堆栈跟踪--log_dir—空若非空则将日志文件写入该目录--logtostderr——将日志输出到标准错误而非文件--namespace-nheptio-arkArk 操作的命名空间v0.7.1 默认命名空间为heptio-ark后续版本改为velero--stderrthreshold—2达到或超过该严重级别的日志进入标准错误--v-v—V 日志的日志级别--vmodule—空逗号分隔的patternN设置用于按文件过滤日志四、输出列与表格展示ark get restores默认以table格式输出。根据当前仓库中输出渲染实现 pkg/cmd/util/output/restore_printer.go恢复任务表格包含以下列列名含义Name恢复任务名称Backup该恢复任务对应的源备份名称来自restore.Spec.BackupNameStatus当前状态阶段来自restore.Status.PhaseStarted恢复开始时间Status.StartTimestampCompleted恢复完成时间Status.CompletionTimestampErrors恢复过程中产生的错误计数Warnings恢复过程中产生的警告计数Created恢复对象的创建时间Selector恢复任务指定的标签选择器Spec.LabelSelector从源码实现可以看出两点细节状态为空时的兜底若restore.Status.Phase为空输出会显示RestorePhaseNew新建状态见 restore_printer.go未设置时间字段的展示时间戳格式化函数会将未设置nil 或零值的时间显示为n/a见 output.go。例如一个因校验失败而从未开始的恢复任务其Started与Completed列都会显示n/a而不是报错或显示nil。4.1 常见输出示例NAME BACKUP STATUS STARTED COMPLETED ERRORS WARNINGS CREATED SELECTOR nginx-restore-20230916 nginx-backup Completed 2026-09-16 02:30:00 0800 CST 2026-09-16 02:32:00 0800 CST 0 2 2026-09-16 02:29:00 0800 CST appnginx注以上输出为示意格式。实际展示的列与内容以当前版本table输出渲染逻辑为准可用真实环境执行命令查看。五、实战用法示例5.1 查看全部恢复任务ark get restores5.2 按命名空间过滤恢复任务保存在 Ark 操作命名空间下可通过-n指定v0.7.1 默认heptio-arkark get restores -n heptio-ark5.3 按标签选择器筛选只显示带有appnginx标签的恢复任务ark get restores -l appnginx标签选择器遵循 Kubernetes 的 label selector 语法支持、!、in、notin等操作符例如ark get restores -l app in (nginx, mysql),environment!prod从实现上看--selector的值会被解析为labels.Parse(...)见 get.go随后作为LabelSelector传递给 Kubernetes 客户端的List调用由 API Server 完成服务端筛选。5.4 将指定标签展示为独立列ark get restores --label-columns app,environment该 Flag 支持重复使用也可一次传入多个ark get restores -L app -L environment注意当前仓库实现中该 Flag 的简写为-L大写定义见 output.gov0.7.1 文档中未标注简写实际使用以所装版本的ark get restores --help输出为准。标签名区分大小写。5.5 在最后一列显示全部标签ark get restores --show-labels5.6 输出为 JSON 或 YAMLark get restores -o json ark get restores -o yaml--output的有效值仅包括table、json、yaml。根据 output.go 中的校验逻辑传入其他值会直接报错invalid output format xml - valid values are table, json, and yaml当使用-o json或-o yaml时输出为完整的RestoreList对象若列表中仅有一个恢复任务则会直接输出该Restore对象本身而非列表见 output.go方便脚本直接取用。5.7 与其他恢复子命令配合使用ark restore createark_restore_create.md从备份创建恢复任务ark restore describeark_restore_describe.md查看单个恢复任务的详细信息ark restore logsark_restore_logs.md查看恢复过程的详细日志ark restore deleteark_restore_delete.md删除不再需要的恢复任务。典型排查流程先用ark get restores发现状态异常如 Errors 列非零的任务再用ark restore describe查看详情最后用ark restore logs定位具体失败资源。六、源码实现原理从 Flag 到 Kubernetes API6.1 命令注册结构当前仓库中恢复类命令统一注册在restore命令组下pkg/cmd/cli/restore/restore.go其下挂载create、get、logs、describe、delete五个子命令。对应的 v0.7.1 文档中的ark get restores即等价于现代命令velero restore get。6.2 执行流程解析get命令的核心实现位于 pkg/cmd/cli/restore/get.go执行流程如下校验 Flag调用output.ValidateFlags校验--output等参数合法性获取客户端通过f.KubebuilderClient()获得基于 controller-runtime 的 Kubernetes 客户端数据获取两种模式指定名称若命令附带恢复任务名称参数则逐个通过kbClient.Get按{命名空间, 名称}获取单个Restore对象并聚合为列表未指定名称解析--selector标签选择器通过kbClient.List拉取命名空间下所有匹配的Restore列表删除标记处理遍历结果若对象的DeletionTimestamp非零即正在被删除则在状态阶段后追加(Deleting)标识见 get.go渲染输出调用output.PrintWithFormat根据--output值选择表格、JSON 或 YAML 渲染。6.3 表格渲染机制表格渲染通过metav1.Table结构完成根据对象类型Restore或RestoreList选择restoreColumns列定义与printRestore/printRestoreList行渲染函数见 output.go再交由 Kubernetes 的TablePrinter含ShowLabels与ColumnLabels选项输出见 output.go。其中--show-labels与--label-columns正是通过这两个选项生效的。6.4 测试用例验证仓库提供了针对该命令的单元测试 pkg/cmd/cli/restore/get_test.go测试会预先创建多个带标签的 Restore 对象然后执行NewGetCommand断言命令的 Short 描述为Get restores并验证输出中每个恢复任务都出现在结果中。这印证了命令支持一次传入多个恢复任务名称输出结果按名称逐一获取并汇总展示该命令被restore命令组以NewGetCommand(f, get)方式注册。七、版本演进提示项目在 v0.7.1 时期名为Heptio Ark因此默认命名空间为heptio-ark命令为ark get restores项目更名Velero后命令变为velero restore get默认命名空间改为velero现代版本中--label-columns的简写为-L大写且命令支持更多输出格式校验细节。在使用本文命令时请根据你所安装的实际版本确认命令名称ark或velero、子命令层级get restores或restore get与默认命名空间可随时通过--help查看当前版本的全部可用 Flag 与默认值。八、参考文档命令参考ark_get_restores.md、ark_get.md、ark_restore_get.md相关命令ark_restore_create.md、ark_restore_describe.md、ark_restore_logs.md、ark_restore_delete.md核心实现pkg/cmd/cli/restore/get.go、pkg/cmd/cli/restore/restore.go输出渲染pkg/cmd/util/output/output.go、pkg/cmd/util/output/restore_printer.go测试用例pkg/cmd/cli/restore/get_test.go【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表