ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Velero `restore get` 命令详解:列出与查询 Kubernetes 集群中的恢复任务

Velero `restore get` 命令详解:列出与查询 Kubernetes 集群中的恢复任务 Velerorestore get命令详解列出与查询 Kubernetes 集群中的恢复任务【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本篇文章以 VeleroArk 前身命令行参考文档 ark restore get 为核心系统讲解restore get子命令的完整用法、全部选项、输出格式与标签筛选能力并结合当前仓库中 get.go 的源码实现、restore_types.go 中的状态机定义以及 get_test.go 测试用例向读者揭示查询恢复任务的底层原理与实战排查技巧。读完本文你将能够熟练使用restore get查看恢复进度、按标签过滤、自定义输出字段并通过状态字段快速判断恢复任务的健康程度。命令概览restore get能做什么restore get是 Velero CLI 中用于获取列出Restore 自定义资源的命令。它是ark restore即今天的velero restore命令族的成员之一与restore create、restore delete、restore describe、restore logs一起构成完整的恢复生命周期管理工具链参见 ark_restore.md。该命令支持两种基本用法# 列出当前命名空间下的所有 Restore velero restore get # 按名称精确获取一个或多个 Restore velero restore get RESTORE_NAME [RESTORE_NAME2 ...]在旧版 Ark 时代该命令写作ark restore get对应的命令结构定义位于 pkg/cmd/cli/restore/restore.go其入口在 pkg/cmd/cli/restore/get.go。restore get也作为聚合命令velero get的一个子集存在通过 pkg/cmd/cli/get/get.go 可以同时查看 backups、restores、schedules 等多种资源。说明restore get查询的是集群内实时存在的 Restore 对象CRD 资源而不是备份存储对象存储中的历史记录因此它直接访问 Kubernetes API与--kubeconfig等集群连接参数强相关。完整选项说明restore get的全部命令参数如下其中前三项为命令自身专属选项其余为从父命令继承的全局参数-h, --help help for get --label-columns stringArray 一个逗号分隔的标签列表作为额外的列展示 -o, --output string 输出显示格式。对 create 类命令而言表示展示对象但不发送到服务器。合法格式为 table、json 和 yaml。默认 table -l, --selector string 只显示匹配该标签选择器的条目 --show-labels 在最后一列显示标签专属选项逐个拆解选项简写默认值说明--label-columns-L空接受逗号分隔的标签键列表将指定的标签渲染为独立列标签名大小写敏感且可多次指定如-L app -L env--output-otable输出格式支持table、json、yaml三种取值--selector-l空标签选择器例如appmyapp,envprod仅显示匹配的 Restore--show-labels无false在表格最后一列展示该对象的全部标签这四个选项都通过 output.BindFlags 和 get.go 注册到命令上--selector直接绑定到metav1.ListOptions.LabelSelector字段而--label-columns、--show-labels、--output则由统一的输出组件管理这也解释了为什么backup get、schedule get、backup-location get等命令拥有一致的输出体验——它们复用同一套 output 包。继承的全局选项这些参数由父命令velero/ 旧版ark提供用于控制集群连接与日志行为选项默认值说明--kubeconfig环境变量KUBECONFIG或集群内配置kubeconfig 文件路径用于与 Kubernetes apiserver 通信--kubecontext当前上下文kubectl config current-context指定 kubeconfig 中要使用的上下文-n, --namespaceheptio-ark旧版默认Ark / Velero 运行所在的命名空间--logtostderr/--alsologtostderr—日志输出控制--log_dir空日志文件目录--log_backtrace_at:0在指定文件:行号处输出堆栈跟踪--stderrthreshold2达到该级别的日志写入 stderr-v, --v—V 级别日志详细度--vmodule空按文件过滤的日志级别如patternN关于命名空间默认值的重要说明历史文档中的默认命名空间是heptio-ark这是 Ark 时代v0.8.1 对应版本的默认值而当前仓库的 Velero 版本默认命名空间为velero。如果你在较新版本上运行且此前安装时未使用默认命名空间请务必通过-n显式指定否则restore get会因命名空间不匹配而查不到任何对象。命令行为解析从参数到结果结合 get.go 的源码restore get的执行流程可以分为四个阶段1. 参数校验与客户端构建命令首先调用output.ValidateFlags(c)校验输出相关标志的合法性然后通过f.KubebuilderClient()获取一个基于 controller-runtime 的 Kubernetes 客户端代码第 41-45 行。该客户端后续的所有读写操作都限定在f.Namespace()返回的命名空间内。2. 两种数据获取路径指定名称时args非空对每个名称逐一执行kbClient.Get(...)获取单个Restore对象并追加到结果列表中第 48-54 行。这种模式适合精确查看某一次恢复任务的元数据。未指定名称时解析--selector标签选择器然后执行kbClient.List(...)获取整个命名空间下所有匹配的 Restore第 55-60 行。不传-l时选择器为空即列出全部。3. 删除标记的展示增强源码第 63-68 行做了一个非常实用的细节处理如果 Restore 对象带有deletionTimestamp即正在被删除则在状态阶段后追加(Deleting)标记。这意味着你无需查看对象的metadata.deletionTimestamp字段仅从表格的STATUS列就能识别出正在删除中的恢复任务。4. 输出渲染最终通过output.PrintWithFormat(c, restores)按用户指定的-o格式输出第 70-76 行。默认的table格式会展示如NAME、BACKUP、STATUS、STARTED、COMPLETED、EXPIRES等核心列json/yaml则输出完整的 Restore 对象定义便于脚本解析或导出到其他工具。实战示例假设 Velero 安装在默认命名空间velero中# 1. 列出全部恢复任务最常用 velero restore get # 2. 查看某个具体恢复任务的详细信息 velero restore get restore-20260916-001 # 3. 只查看属于某应用的恢复标签筛选 velero restore get -l appmyapp # 4. 在表格中额外展示 app 和 env 两个标签列 velero restore get -L app,env # 5. 展示所有标签方便快速浏览 velero restore get --show-labels # 6. 以 JSON 格式输出便于程序化处理 velero restore get -o json # 7. 同时指定标签列与输出格式 velero restore get -o yaml -L app上述命令在旧版 Ark 中只需将velero替换为ark并把默认命名空间改为heptio-ark即可。输出格式详解table、json 与 yaml-o, --output是restore get中最值得关注的自定义选项默认tabletable人眼友好的表格视图展示 NAME、BACKUP、STATUS 等预定义列可通过--label-columns与--show-labels扩展json输出完整的 Restore 对象包含metadata、spec、status全部字段适合jq管道处理或故障排查时提取status.failureReasonyaml与json等价的对象级输出但采用 YAML 语法便于人工阅读和版本对比。源码层面的支持位于 output.goBindFlags一次性注册了output、label-columns、show-labels三个标志并通过GetLabelColumnsValues、GetShowLabelsValue等辅助函数第 76-86 行在渲染阶段读取它们的值将标签渲染为额外列或最后一列。结合源码理解输出标志的实现--label-columns的实现细节值得留意在 output.go 中它使用flag.NewStringArray()定义因此支持两种写法# 逗号分隔 velero restore get -L app,env # 多次指定效果等价 velero restore get -L app -L env这与文档中标注的类型stringArray完全一致。--show-labels则是标准布尔开关默认false开启后标签会集中展示在表格最后一列。另外需要注意的是-l/--selector使用的是 Kubernetes 标准的标签选择器语法keyvalue、key in (v1,v2)等由k8s.io/apimachinery/pkg/labels解析见 get.go因此它的表达能力与kubectl get -l完全一致。状态列解读从 RestorePhase 状态机看恢复任务健康度restore get表格中的STATUS列是排查恢复任务最重要的信息。它对应 Restore CRD 的status.phase字段完整的状态集合定义在 restore_types.go状态值含义NewRestore 已创建但尚未被 RestoreController 处理FailedValidation未通过控制器校验任务不会执行InProgress正在执行中WaitingForPluginOperationsK8s 资源恢复成功异步插件操作仍在进行WaitingForPluginOperationsPartiallyFailed异步插件操作部分失败最终将进入 PartiallyFailedFinalizing资源与异步操作完成等待收尾任务wrap-up后进入终态FinalizingPartiallyFailed收尾前已发生部分错误Completed全部成功无错误PartiallyFailed运行完成但个别资源恢复报错Failed任务无法执行错误记录在status.failureReason通过 restore_types.go 的kubebuilder:validation:Enum注解可以看到这个枚举同时也是 CRD 的合法取值约束。实际排查时看到InProgress/Finalizing说明任务还在跑Completed是理想终态PartiallyFailed需要结合velero restore describe或 restore logs 查看具体失败项Failed则应通过-o json提取status.failureReason字段定位根因。结合 get.go 的增强逻辑当对象处于删除流程deletionTimestamp非零时状态列还会显示(Deleting)后缀帮助区分“正在清理”与“异常终止”两种情形。与describe、logs的配合使用restore get解决的是“有哪些恢复、处于什么状态”的概览问题若要深入调查单个任务建议与命令族的其他成员配合命令用途velero restore describe NAME查看单个 Restore 的详细信息含警告、错误统计见 ark_restore_describe.mdvelero restore logs NAME获取恢复过程的日志--timeout默认 1 分钟见 ark_restore_logs.mdvelero restore delete NAME删除指定的 Restore 对象见 ark_restore_delete.md典型排查链路如下# 概览先找到可疑的恢复 velero restore get # 聚焦看这个恢复的详细状态与失败统计 velero restore describe restore-20260916-001 # 深挖拉取日志定位具体失败资源 velero restore logs restore-20260916-001测试用例验证仓库中的 get_test.go 为restore get提供了完整的单元测试其测试流程可以印证本文所述的命令行为构造一个 fake controller-runtime 客户端并在其中创建b1、b2、b3三个带标签的 Restore 对象第 44-48 行以这三个名称作为参数调用NewGetCommand并执行第 54-59 行验证命令的Short描述为Get restores第 55 行通过子进程捕获真实 stdout断言每个名称均出现在输出中第 65-78 行。该测试同时覆盖了“按名称精确获取”的代码路径说明velero restore get NAME1 NAME2 ...的批量查询能力是经过验证的正式功能。版本演变提示本文对应的命令在 Ark 时代v0.8.1写作ark restore get项目更名 Velero 后变为velero restore get。当前仓库的完整 CLI 参考可从 site/content/docs/v0.8.1/cli-reference/README.md 进入所有命令的最终权威说明始终可以通过在命令行执行velero restore get --help获取。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表