恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Velero(Ark)`backup get` 命令完全指南:查询备份、状态解析与输出控制
首页
资讯中心
/
Velero(Ark)`backup get` 命令完全指南:查询备份、状态解析与输出控制
Velero(Ark)`backup get` 命令完全指南:查询备份、状态解析与输出控制
发布时间:2026/9/16 11:27:40
VeleroArkbackup get命令完全指南查询备份、状态解析与输出控制【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本文围绕 Velero 项目 v0.3.0 时代 CLI 参考文档中的ark backup get命令展开讲解如何列出与查询 Kubernetes 集群中的备份Backup资源、按标签筛选、按需扩展输出列以及切换 table/json/yaml 输出格式。读者读完可以掌握该命令全部选项的语义与默认行为并能从源码层面理解每一列数据的来源直接用于日常备份运维与脚本化集成。说明v0.3.0 时代 CLI 名为ark对应文档位于 ark_backup_get.md。后续版本中命令更名为velero backup get但命令语义、选项与实现逻辑在 pkg/cmd/cli/backup/get.go 中持续沿用本文以当前仓库源码为准展开说明。命令概述ark backup getark backup get用于获取列出Velero 管理的备份资源。其 Synopsis 与基本用法为ark backup get不带任何参数时列出当前命名空间默认velero下所有备份传入一个或多个备份名称时仅查询并显示这些指定备份的详情。在命令行中get是ark backup的子命令完整的备份子命令集合见 ark_backup.md顶层命令ark负责统一接入 kubeconfig、日志等全局参数见 ark.md。查询行为与源码实现从当前仓库源码 pkg/cmd/cli/backup/get.go 可以看到get命令的核心执行逻辑分为两条路径backups : new(api.BackupList) if len(args) 0 { // 按名称逐个获取 for _, name : range args { backup : new(api.Backup) err : kbClient.Get(context.TODO(), kbclient.ObjectKey{Namespace: f.Namespace(), Name: name}, backup) cmd.CheckError(err) backups.Items append(backups.Items, *backup) } } else { // 列出所有备份支持标签选择器 parsedSelector, err : labels.Parse(listOptions.LabelSelector) cmd.CheckError(err) err kbClient.List(context.TODO(), backups, kbclient.ListOptions{ LabelSelector: parsedSelector, Namespace: f.Namespace(), }) cmd.CheckError(err) }按名称查询把命令行参数中的每个备份名拼成{Namespace, Name}对象调用 controller-runtime 的Get从 Kubernetes API Server 逐个读取多个名称之间是独立的最终汇总为一个列表输出。列出全部不传名称时把--selector解析为 Kubernetes 标签选择器后调用List配合--selector即可实现按标签过滤。两条路径都限定在f.Namespace()即 Velero 自身所在的命名空间通常为velero意味着backup get只能查询 Velero 部署命名空间内的备份资源。该命令还通过c.ValidArgsFunction cli.CompleteBackupNames(f)注册了备份名的自动补全函数交互式 Shell 下可以按 Tab 补全备份名称。命令执行前会调用output.ValidateFlags对输出相关标志进行校验见下文“输出格式”一节校验失败时命令直接报错退出。源码测试验证仓库中的 get_test.go 使用 fake client 验证了该命令的两条核心路径创建b1、b2、b3三个带标签abcabc的备份后执行velero backup get b1 b2 b3断言输出中每个备份名各出现一次按名称查询路径再次执行带-l abcabc的velero backup get断言通过标签选择器筛选出的结果同样包含全部三个备份标签过滤路径。该测试同时印证了get命令的 Short 描述为 Get backups与文档一致。选项详解-l, --selector string只显示匹配该标签选择器的备份。该值被解析为 Kubernetes 标准labels.Selector后传给List请求见 get.go。典型用法ark backup get -l appnginx ark backup get -l app in (nginx,redis)选择器语法与kubectl get --selector完全一致支持、、!、in、notin、exists等集合操作。该参数只作用于“不传名称、批量列出”的场景一旦显式指定了备份名称--selector不会参与过滤从源码分支结构可以推断。--label-columns stringArray以逗号分隔的标签键列表把这些标签作为独立的表格列展示。用法ark backup get --label-columnsapp,env对应源码 output.go 中的BindFlags该标志被定义为flag.NewStringArray()因此既支持逗号分隔--label-columnsa,b也支持多次传入--label-columnsa --label-columnsb。标签名区分大小写未设置对应标签的备份在该列显示为空。-o, --output string输出显示格式默认值为table。文档说明其合法取值为table、json、yaml对于 create 类命令-o表示“仅显示对象而不真正提交到服务端”。源码 output.go 中的校验逻辑明确取值只能是table、json、yaml空值表示跳过打印其它值一律报错invalid output format xxx - valid values are table, json, and yaml--show-labels在表格的最后一列追加展示该备份的全部标签未设置标签时显示none。该开关通过printers.PrintOptions.ShowLabels传入 Kubernetes 表格打印器见 output.go。三个选项的协同--label-columns、--show-labels、-o三个标志由统一的output.BindFlags绑定见 get.go它们共同决定表格的展示维度ark backup get --show-labels --label-columnsapp,env -o table从父命令继承的全局选项以下选项在ark根命令上定义backup get会自动继承用于控制 kubeconfig 连接与日志行为选项说明--kubeconfig string连接 Kubernetes API Server 使用的 kubeconfig 路径未设置时依次尝试环境变量KUBECONFIG与集群内配置in-cluster config--alsologtostderr除了写日志文件外同时输出日志到标准错误--log_backtrace_at traceLocation当日志命中file:N时输出堆栈跟踪默认:0即不触发--log_dir string非空时将日志文件写入该目录--logtostderr将日志输出到标准错误而非文件--stderrthreshold severity达到或超过该级别的日志进入 stderr默认2即 ERROR-v, --v Level设置 V 级别日志的详细程度--vmodule moduleSpec按patternN的逗号分隔列表对特定文件做日志级别过滤这些继承参数与根命令 ark.md 中的定义一一对应是 Velero CLI 所有子命令共享的日志与连接基础设施。table 输出格式九列数据的含义默认的table输出由 backup_printer.go 定义列定义见其中的backupColumnsName Status Errors Warnings Created Expires Storage Location Queue Position Selector各列数据在printBackup函数中逐项填充含义如下列数据来源说明Namebackup.Name备份名称Statusbackup.Status.Phase备份当前阶段见下文“阶段解析”对象正在被删除时显示DeletingErrorsbackup.Status.Errors备份过程中产生的错误计数Warningsbackup.Status.Warnings备份过程中产生的警告计数Createdbackup.Status.StartTimestamp备份实际开始时间尚未开始如停留在 New 阶段时显示n/aExpiresbackup.Status.Expiration或由StartTimestamp TTL推算相对当前时间的剩余有效期过期后显示xx ago无过期时间显示n/aStorage Locationbackup.Spec.StorageLocation该备份使用的存储位置Queue Positionbackup.Status.QueuePosition备份在队列中的位置为 0不在队列时显示为空Selectorbackup.Spec.LabelSelector备份声明要包含的资源标签选择器值得注意的实现细节排序printBackupList先调用sortBackupsByPrefixAndTimestamp排序默认按名称字典序如果多个备份名来自同一调度且带 14 位时间戳后缀如schedule-20240915120000则同一前缀内按时间戳从新到旧排列见 backup_printer.go。过期时间推算若Status.Expiration尚未生成源码只在“备份已经开始StartTimestamp非空且 TTL 大于 0”时用StartTimestamp TTL估算过期时间避免把停滞在 New 阶段的备份误判为已过期。空阶段处理阶段为空时按New处理。备份阶段Status枚举Status列的取值定义于 backup_types.goBackupPhase*常量完整枚举如下阶段含义New刚创建尚未被控制器处理Queued已入队等待执行ReadyToStart已就绪等待启动FailedValidation参数校验失败备份不会执行InProgress备份执行中WaitingForPluginOperations等待插件异步操作完成WaitingForPluginOperationsPartiallyFailed插件操作部分失败等待其余完成Finalizing收尾阶段FinalizingPartiallyFailed收尾阶段部分失败Completed备份成功完成PartiallyFailed备份完成但存在部分失败如某些资源失败Failed备份失败Deleting删除中在 v0.3.0 时代阶段集合相对精简New、InProgress、Completed、Failed、Deleting 等上述列表为当前仓库完整枚举可作为查询状态时的参考全集。json / yaml 输出面向脚本与排查-o json与-o yaml通过 output.go 的printEncoded实现直接序列化Backup/BackupList对象。一个细节是当对象是列表但只包含 1 个条目时会直接打印该单个对象而不是外层列表便于脚本解析。ark backup get -o json # 所有备份的 JSON ark backup get my-backup -o yaml # 单个备份的 YAML含完整 Spec 与 Statusjson/yaml 输出包含完整资源字段metadata、spec、status是排查备份详情如status.phase、status.errors、status.warnings、spec.ttl、spec.storageLocation等和接入自动化脚本的首选方式。典型使用场景1. 查看当前所有备份的状态ark backup get重点关注Status、Errors、Warnings三列Completed且Errors0说明备份成功出现PartiallyFailed或Failed时结合Errors/Warnings数量判断严重程度。2. 按标签筛选备份ark backup get -l envprod ark backup get --label-columnsenv,app第一条只显示envprod的备份第二条把env、app两个标签展示为独立列方便批量比对不同环境的备份覆盖情况。3. 深入排查单个备份ark backup get my-backup -o yaml ark backup get my-backup -o json获取完整 Spec 与 Status 后可核对 TTL、存储位置、资源过滤器LabelSelector以及详细的错误/警告统计。4. 脚本化轮询备份完成状态ark backup get my-backup -o jsonpath{.status.phase}在支持该输出格式的环境下可用 jsonpath 提取阶段字段做轮询判断否则可退化为-o json配合jq解析例如ark backup get -o json | jq -r .items[] | select(.status.phaseFailed) | .metadata.name相关命令与延伸阅读backup get只是备份管理命令族的一员配套子命令还包括ark backup create创建备份ark backup备份命令族入口恢复与调度查询ark restore get、ark schedule get使用相同的查询与输出框架对应源码 pkg/cmd/cli/restore/get.go、pkg/cmd/cli/schedule/get.go。若需了解备份对象的完整字段定义含BackupSpec、BackupStatus及各阶段常量可深入阅读 backup_types.go输出与打印层的通用实现BindFlags、ValidateFlags、PrintWithFormat、表格打印集中在 output.go。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考