ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Velero(Ark)`backup get` 命令完全指南:查询 Kubernetes 备份列表与状态

Velero(Ark)`backup get` 命令完全指南:查询 Kubernetes 备份列表与状态 VeleroArkbackup get命令完全指南查询 Kubernetes 备份列表与状态【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本指南基于仓库文档 ark_backup_get.md 展开系统讲解 Velero 前身 Heptio Arkv0.7.0中ark backup get命令的语法、全部参数、输出格式与底层实现。读者将掌握如何列出备份、按标签筛选、自定义表格列、切换 JSON/YAML 输出并理解表格中每个状态与数值列背后的源码含义文中所指命令在现代 Velero 中对应velero backup get用法一脉相承。命令定位查看备份资源的核心入口ark backup get用于获取列出当前集群中已创建的 Backup 资源。在 v0.7.0 的文档体系中备份操作被组织在ark backup子命令组之下该命令组包含 create、delete、describe、download、get、logs 六个子命令参见 ark_backup.md其中 get 是日常巡检、确认备份是否成功、校验备份数量与状态时最常用的入口。需要说明的历史背景v0.7.0 时代该项目名为 Heptio ArkCLI 命令为ark默认命名空间为heptio-ark见 ark.md 中的根命令说明如今仓库已演进为 Velero命令相应变为velero backup get默认命名空间为velero但参数语义与输出格式基本保持一致本文源码引用以当前仓库实现为准。两种等价的调用形式与 kubectl 风格一致Ark 同时支持“名词 动词”与“动词 名词”两种命令组织方式ark.md 对此有明确说明ark backup get [flags] ark get backups [flags]后者等价文档见 ark_get_backups.md两者参数完全一致。这种设计让熟悉 kubectl 的用户可以无缝迁移操作习惯。语法与参数详解命令基本语法ark backup get [flags]如果希望在命令后直接跟备份名称列表当前仓库的 get.go 源码同样支持——当传入位置参数如velero backup get b1 b2时会逐一对每个名称执行 Get 操作并合并展示这在 v0.7.0 文档中虽未展开但可作为补充能力使用。本命令专属参数参数简写默认值说明--help-h-显示 get 命令帮助信息--label-columns-无逗号分隔的标签列表将这些标签作为额外列展示标签名区分大小写--output-otable输出格式合法值为table、json、yamltable为默认值--selector-l空标签选择器只展示匹配该选择器的备份例如-l appnginx--show-labels-false在最后一列展示对象的全部标签其中--label-columns、--output、--show-labels三个参数由统一的输出工具绑定见 output.go 的BindFlags。需要注意--label-columns实际绑定的短参数是-L大写并且支持重复使用例如-L app -L env其值类型为stringArrayv0.7.0 文档中该参数写作--label-columns stringArray且未标注简写使用时应以源码实现为准。输出格式校验与-o的三种取值--output并非任意字符串都可以通过当前实现会在命令执行前调用ValidateFlags做严格校验output.gotable默认的人类可读表格输出json/yaml输出完整对象的序列化结果适合脚本解析与二次处理空字符串直接跳过打印其他值报错invalid output format %q - valid values are table, json, and yaml。一个值得注意的细节是当以 JSON/YAML 输出一个仅包含单个元素的列表时实现会剥离列表外壳、直接输出该元素对象见 output.go 的printEncoded使结果更符合直觉。继承自父命令的全局参数ark backup get还继承了根命令ark的全部全局参数见 ark.md 与ark backup get文档的 Options inherited from parent commands 一节主要包括参数默认值说明--kubeconfig string环境变量KUBECONFIG其次集群内配置连接 Kubernetes apiserver 使用的 kubeconfig 文件路径-n, --namespace stringheptio-arkArk 操作所在的命名空间v0.7.0 默认值现代 Velero 为velero--alsologtostderrfalse同时将日志写入标准错误与文件--logtostderrfalse日志写入标准错误而非文件--log_dir string空非空时指定日志文件目录--log_backtrace_at traceLocation:0日志命中file:N时输出堆栈--stderrthreshold severity2ERROR达到该级别及以上的日志转入 stderr-v, --v Level0V 日志级别--vmodule moduleSpec空按patternN逗号分隔的按文件过滤的日志级别这些参数让 get 命令在排查集群连接问题时可以通过-v提升日志详细度在脚本化场景中可通过-o json配合 jq 等工具做自动化断言。表格输出的列结构从源码读懂每一列v0.7.0 文档仅给出命令与参数未列出输出列定义当前仓库的 backup_printer.go 明确定义了ark/velero backup get默认表格的九列列名含义NAME备份名称STATUS备份当前阶段PhaseERRORS备份过程中记录的错误数WARNINGS备份过程中记录的警告数CREATED备份启动时间StartTimestamp未启动时显示n/aEXPIRES过期时间倒计时由 TTL 推算无到期时间时显示n/aSTORAGE LOCATION备份写入的 BackupStorageLocation 名称QUEUE POSITION备份在队列中的位置仅当 Phase 为Queued时有意义0 显示为空SELECTOR备份 Spec 中声明的标签选择器STATUS 列的阶段取值STATUS列展示的是 Backup 的 Phase 字段其完整枚举定义在 backup_types.goNew备份刚创建、尚未进入处理流程Phase 为空时表格默认展示为NewQueued已入队等待执行此时QUEUE POSITION列有意义ReadyToStart准备开始执行FailedValidation校验失败可结合 ValidationErrors 字段查看具体原因InProgress执行中WaitingForPluginOperations/WaitingForPluginOperationsPartiallyFailed等待插件异步操作含部分失败Finalizing/FinalizingPartiallyFailed收尾处理阶段Completed成功完成PartiallyFailed部分失败有错误也有警告通常仍可恢复使用Failed整体失败Deleting正在进行删除由DeletionTimestamp非空触发见 backup_printer.go。CREATED 与 EXPIRES 列的推算逻辑CREATED展示Status.StartTimestamp该字段为空时显示n/a例如校验失败、从未真正启动的备份而不是 Go 零值的nil见 output.go 的formatTimestamp。EXPIRES展示到期时间距现在的倒计时如24h已过期则显示xxx ago未设置到期时间显示n/a。当Status.Expiration尚未写入时实现会用StartTimestamp Spec.TTL估算backup_printer.go并刻意避免用CreationTimestamp推算以免把卡在New阶段、从未启动的备份误判为“已过期”。排序规则列表默认按备份名称字母序展示但当多个备份源自同一 Schedule名称带 14 位时间戳后缀如-2025010112000000匹配正则-[0-9]{14}$时同一前缀组内按时间戳倒序最新在前排列参见 backup_printer.go 的sortBackupsByPrefixAndTimestamp。底层调用链get 命令是如何工作的当前仓库中NewGetCommand的实现位于 pkg/cmd/cli/backup/get.go完整流程如下执行output.ValidateFlags(c)校验-o取值是否合法通过 client Factory 获取 controller-runtime 客户端kbClient若命令带备份名称位置参数则逐个按{Namespace, Name}执行Get并追加到结果列表get.go否则将-l指定的选择器字符串解析为labels.Selector执行带LabelSelector与Namespace限制的List查询get.go其中-l参数就是在这里绑定到metav1.ListOptions.LabelSelector的get.go调用output.PrintWithFormat按-o指定的格式打印table走printTablejson/yaml走printEncodedoutput.go。表格输出最终由 Kubernetes 的printers.NewTablePrinter渲染output.go其中--label-columns与--show-labels正是通过PrintOptions.ColumnLabels与PrintOptions.ShowLabels注入表格打印器的这就是“自定义标签列”与“末列显示标签”的实现机理。实战示例列出当前命名空间v0.7.0 为heptio-ark现代版为velero下全部备份ark backup get输出形如现代 Velero 列名NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR nginx-backup Completed 0 0 2025-01-01 10:00:00 0000 UTC 71h59m default none nightly-20250101 InProgress 0 1 2025-01-01 02:00:00 0000 UTC 95h59m default appnginx按标签筛选只查看匹配的备份ark backup get -l appnginx只查看指定名称的备份现代 Velero 支持velero backup get b1 b2将标签作为独立列展示并在最后一列显示全部标签ark backup get -L app -L env --show-labels输出机器可读的 JSON / YAML便于脚本处理ark backup get -o json ark backup get -o yaml结合--kubeconfig指定集群当默认 kubeconfig 不可用时可显式指定ark backup get --kubeconfig /path/to/kubeconfig测试保障该命令的行为有单元测试覆盖见 get_test.go测试先通过 fake client 创建带标签如abcabc的多个备份对象再分别验证“按名称逐个 Get 的列表输出”与“通过-l abcabc标签选择器过滤后输出”两种路径确认命令端到端可执行且输出包含对应行。这一测试同时也印证了第 3 步与第 4 步的调用分支是真实可用的。延伸阅读ark backup get属于完整的备份命令族可配合以下文档使用创建备份ark_backup_create.md删除备份ark_backup_delete.md查看备份详情ark_backup_describe.md下载备份数据ark_backup_download.md查看备份日志ark_backup_logs.md其他等价命令的文档同样位于 site/content/docs/v0.7.0/cli-reference 目录下例如ark getark_get.md与ark get backupsark_get_backups.md。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进