ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Velero(Ark)`restore get` 命令详解:查询 Kubernetes 恢复任务的状态与输出

Velero(Ark)`restore get` 命令详解:查询 Kubernetes 恢复任务的状态与输出 VeleroArkrestore get命令详解查询 Kubernetes 恢复任务的状态与输出【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero导读ark restore get是 Velero旧名 Ark灾备体系中用于查询恢复Restore任务的核心命令。通过它你可以列出指定命名空间下的所有恢复任务、按名称精确获取单个任务并用标签选择器、自定义输出列等能力对结果进行过滤与格式化。本文以 v0.6.0 时代的arkCLI 参考文档为主体结合当前仓库中对应的 Go 源码pkg/cmd/cli/restore/get.go与表格打印实现完整讲解该命令的用法、每个参数的行为细节、输出列的含义以及其与兄弟命令create/describe/logs的分工帮助你快速定位一次恢复是成功、失败还是仍在进行中。说明v0.6.0 时代的命令行前缀为ark后续版本已更名为velero命令结构完全一致例如velero restore get。命令概览与基本用法ark restore get用于获取恢复Restore任务列表或单个任务详情其基本语法如下ark restore get [flags]执行后默认输出一张表格展示所选命名空间下所有 Restore 资源的概要信息。它的命令层级位于ark restore之下与create、delete、describe、logs等子命令并列子命令作用ark restore create BACKUP基于某个备份创建恢复任务ark restore get获取恢复任务列表 / 单个任务ark restore describe查看恢复任务的详细描述ark restore delete删除恢复任务ark restore logs获取恢复任务的日志从源码结构看get子命令由NewGetCommand构造被挂载在ark restore命令组下pkg/cmd/cli/restore并使用 Cobra 框架注册--selector等参数pkg/cmd/cli/restore/get.go#L81。参数详解命令自身参数参数缩写默认值说明--help-h—查看命令帮助信息--label-columns—无逗号分隔的标签列表将指定的标签作为表格中的独立列展示--output-otable输出格式支持table、json、yaml--selector-l无只显示匹配该标签选择器的条目--show-labels—false在表格最后一列展示所有标签其中--label-columns支持重复使用如-L label1 -L label2且标签名区分大小写该参数实际上由flag.NewStringArray实现的数组类型承载pkg/cmd/util/flag/array.go#L25-L29output.BindFlags负责统一注册这几个输出相关参数pkg/cmd/util/output/output.go#L45-L50。继承自父命令的参数以下参数由ark根命令统一提供ark restore get可直接使用参数说明--alsologtostderr除了写日志文件外同时将日志输出到标准错误--kubeconfig string与 Kubernetes apiserver 通信所用的 kubeconfig 路径未设置时依次尝试环境变量KUBECONFIG与集群内配置--log_backtrace_at traceLocation当日志命中file:N时输出堆栈默认:0--log_dir string日志文件输出目录非空时启用文件日志--logtostderr将日志输出到标准错误而不是文件--stderrthreshold severity达到该级别及以上的日志输出到 stderr默认2即 error-v, --v LevelV 级别日志的详细程度--vmodule moduleSpec按文件过滤的patternN日志级别配置逗号分隔常用操作示例列出所有恢复任务直接不带任何参数运行即可默认输出table格式ark restore get执行效果类似NAME BACKUP STATUS STARTED COMPLETED ERRORS WARNINGS CREATED SELECTOR my-restore my-backup Completed 2026-09-15 10:00:00 0800 CST 2026-09-15 10:05:00 0800 CST 0 0 2026-09-15 09:59:00 0800 CST none查看单个恢复任务在命令后直接跟任务名可精确获取单个任务ark restore get my-restore从实现上看当提供了位置参数时get命令会逐个按名称通过 controller-runtime 客户端执行Get并组装成结果列表pkg/cmd/cli/restore/get.go#L48-L54未提供参数时才走List全量查询路径。按标签选择器过滤--selector/-l采用 Kubernetes 标签选择器语法只展示匹配的资源ark restore get -l appmy-app,envproduction未指定参数时LabelSelector为空等价于列出全部恢复指定后则由labels.Parse解析并传递给List调用pkg/cmd/cli/restore/get.go#L56-L60。调整输出格式支持table、json、yaml三种格式便于人工查看或脚本解析ark restore get my-restore -o json ark restore get my-restore -o yaml需要注意的是--output的取值在运行前会经过output.ValidateFlags校验非法格式会被直接拒绝pkg/cmd/util/output/output.go#L97-L109。展示标签列# 将 app 标签作为独立列展示 ark restore get --label-columns app # 在最后一列展示全部标签 ark restore get --show-labels表格输出列的含义get命令的表格列由restoreColumns定义pkg/cmd/util/output/restore_printer.go#L27-L39列来源含义NAMErestore.Name恢复任务名称BACKUPrestore.Spec.BackupName该恢复所基于的备份名称STATUSrestore.Status.Phase恢复所处的阶段详见下文STARTEDrestore.Status.StartTimestamp恢复开始执行的时间COMPLETEDrestore.Status.CompletionTimestamp恢复完成的时间ERRORSrestore.Status.Errors错误计数WARNINGSrestore.Status.Warnings警告计数CREATEDrestore.CreationTimestamp资源创建时间SELECTORrestore.Spec.LabelSelector恢复时使用的资源标签选择器当状态字段为空时打印逻辑会将其回退为Newpkg/cmd/util/output/restore_printer.go#L56-L59时间戳未设置时则显示为n/apkg/cmd/util/output/output.go#L259-L263。另外get命令在输出前会检查DeletionTimestamp如果恢复任务正在被删除则会在状态后追加(Deleting)标记例如Completed (Deleting)pkg/cmd/cli/restore/get.go#L63-L68。STATUS 阶段取值Restore 的阶段由RestorePhase枚举定义pkg/apis/velero/v1/restore_types.go#L285-L335阶段含义New恢复已创建但尚未开始处理FailedValidation恢复未通过验证无法执行InProgress恢复正在执行中WaitingForPluginOperations等待插件异步操作完成WaitingForPluginOperationsPartiallyFailed插件操作有部分失败等待其余操作完成Finalizing恢复进入收尾阶段FinalizingPartiallyFailed收尾阶段存在部分失败Completed恢复成功执行完毕PartiallyFailed恢复执行到完成但存在部分失败Failed恢复无法执行源码实现与调用链NewGetCommandpkg/cmd/cli/restore/get.go#L34-L86的整体执行流程如下调用output.ValidateFlags校验输出格式参数通过f.KubebuilderClient()获取 controller-runtime 客户端若提供了位置参数则逐个Get指定名称的 Restore否则用labels.Parse解析--selector后执行List遍历结果为带删除时间戳的对象追加(Deleting)状态后缀通过output.PrintWithFormat按--output指定的格式打印。在table格式下PrintWithFormat会依据对象类型*Restore/*RestoreList选择restoreColumns与printRestore/printRestoreListpkg/cmd/util/output/output.go#L151-L237在json/yaml格式下则通过encode.Encode直接序列化输出且当列表仅含一项时会自动退化为打印单个对象pkg/cmd/util/output/output.go#L129-L149。对应的单元测试位于 pkg/cmd/cli/restore/get_test.go测试会先创建多个带标签的 Restore 对象再调用NewGetCommand传入多个名称参数并断言每个名称均出现在输出中从而验证了“按名称精确获取并打印”这一主路径。此外该命令还注册了基于 Restore 名称的 shell 补全函数CompleteRestoreNamespkg/cmd/cli/completion_functions.go#L87支持交互式终端中的参数自动补全。与兄弟命令的分工ark restore create创建恢复任务支持--include-namespaces、--include-resources、--exclude-namespaces、--namespace-mappings等过滤与映射参数也可用-o json/yaml只打印对象而不真正提交到集群ark restore get本命令负责列表 / 单条概要查询与格式化输出ark restore describe展示单个或多个恢复任务的详细描述也支持-l标签过滤适合深挖一个任务的完整字段ark restore logs获取恢复执行的详细日志用于排错。实际排障时推荐先ark restore get -o wide或ark restore get看状态概览再用ark restore describe name查看细节最后用ark restore logs name定位具体失败原因。常见问题Q为什么STATUS一列显示nil或空白当Status.Phase为空时打印逻辑会将其归一为New表示资源已创建但尚未进入处理流程pkg/cmd/util/output/restore_printer.go#L56-L59。Q如何批量查看某次恢复涉及的资源get只提供任务级概要资源级的恢复结果需结合ark restore describe name查看或用ark restore logs name分析日志。Q输出里出现Completed (Deleting)是什么含义表示该恢复任务带有删除时间戳正被删除流程清理状态本身是Completedpkg/cmd/cli/restore/get.go#L63-L68。Q--label-columns与--show-labels能否同时使用可以。前者将指定标签渲染为独立列后者在最后一列展示全部标签二者分别通过PrintOptions.ColumnLabels与ShowLabels生效pkg/cmd/util/output/output.go#L241-L250。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表