ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Velero(Ark)`ark get` 命令完全指南:资源查询语法、输出格式与源码实现解析

2026/9/16 14:20:43 拓冰建站 浏览量
Velero(Ark)`ark get` 命令完全指南:资源查询语法、输出格式与源码实现解析 VeleroArkark get命令完全指南资源查询语法、输出格式与源码实现解析【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero导读ark get是 Heptio ArkVelero 前身CLI 中用于查询备份、恢复、调度等 Kubernetes 自定义资源的核心命令其设计模型与kubectl get高度一致。本文以仓库site/content/docs/v0.7.0/cli-reference/ark_get.md为骨架完整梳理该命令的语法、全局继承选项与三个查询子命令并结合pkg/cmd/cli下的真实源码讲清标签选择器、输出格式、命名空间解析等底层机制帮助你掌握在任意 Velero 版本中高效巡检备份状态的操作方法。一、命令概览ark get是什么ark get是 Ark CLI 的查询类命令功能一句话概括就是Get ark resources获取 Ark 资源。它面向 Velero/Ark 自定义资源CRD提供统一的列表与查看入口当前版本v0.7.0 文档支持三类资源ark get backups—— 获取备份Backup资源ark get restores—— 获取恢复Restore资源ark get schedules—— 获取调度计划Schedule资源与其配套的ark create、ark delete、ark describe共同构成 Ark 完整的资源管理命令族参见 ark.md 的 SEE ALSO 章节。该文档明确指出Ark 采用了与kubectl相似的命令模型同一操作存在两种等价写法ark get backup与ark backup get等价ark create schedule与ark schedule create等价这也解释了后续章节中子命令别名Aliases的设计来源。二、完整命令语法与选项参考Synopsisark get [flags] ark get [command]命令本身不带额外位置参数资源类型由子命令指定。Optionsark get自身选项-h, --help help for getark get本身唯一的选项是-h, --help用于打印帮助信息实际查询能力全部来自其子命令。Options inherited from parent commands父命令继承的全局选项--alsologtostderr log to standard error as well as files --kubeconfig string Path to the kubeconfig file to use to talk to the Kubernetes apiserver. If unset, try the environment variable KUBECONFIG, as well as in-cluster configuration --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --logtostderr log to standard error instead of files -n, --namespace string The namespace in which Ark should operate (default heptio-ark) --stderrthreshold severity logs at or above this threshold go to stderr (default 2) -v, --v Level log level for V logs --vmodule moduleSpec comma-separated list of patternN settings for file-filtered logging这些继承自ark根命令的全局选项中有两个在实战中最高频选项含义实战提示-n, --namespaceArk 操作的 Kubernetes 命名空间v0.7.0 默认heptio-ark不指定时只查询该命名空间内的资源--kubeconfigkubeconfig 文件路径未设置时依次回退到$KUBECONFIG环境变量与集群内配置详见 README.md 中的凭据搜索顺序说明--logtostderr/--alsologtostderr日志输出控制排查 CLI 问题时开启可将日志打到 stderr-v, --vV 日志级别数值越大输出越详细--vmodule按文件过滤的日志级别形如patternN的逗号分隔列表如--vmodule*.go5注意一个版本演进细节v0.7.0 文档中默认命名空间为heptio-ark项目当时名为 Heptio Ark而当前仓库源码中该常量已更新为velero——见 pkg/apis/velero/v1/constants.go 中DefaultNamespace velero。因此在新版本中执行velero get backups时默认查询的命名空间是velero。三、三个查询子命令backups / restores / schedules3.1ark get backupsark get backups [flags]获取 Backup 资源列表。完整选项-h, --help help for backups --label-columns stringArray a comma-separated list of labels to be displayed as columns -o, --output string Output display format. For create commands, display the object but do not send it to the server. Valid formats are table, json, and yaml. (default table) -l, --selector string only show items matching this label selector --show-labels show labels in the last column典型用法# 列出全部备份表格形式 ark get backups # 仅显示处于某标签选择器匹配范围的备份 ark get backups -l appmyapp # 以 JSON 格式输出便于管道处理 ark get backups -o json # 将指定标签渲染为独立列并在最后一列展示全部标签 ark get backups --label-columns app --show-labels3.2ark get restoresark get restores [flags]获取 Restore 资源列表。选项与ark get backups完全一致--label-columns、-o/--output、-l/--selector、--show-labels。典型用法ark get restores ark get restores -o yaml ark get restores -l phaseCompleted3.3ark get schedulesark get schedules [flags]获取 Schedule 资源列表选项同样为上述四个。典型用法ark get schedules ark get schedules -l schedule-typedaily三个子命令共享同一套标志设计标签筛选-l、标签列展示--label-columns、标签尾列--show-labels与输出格式-o学习成本极低与kubectl get的使用直觉保持一致。四、核心 Flags 的源码级解读4.1 输出格式-o, --outputtable / json / yaml输出格式标志由pkg/cmd/util/output/output.go中的BindFlags统一绑定默认值为table。该文件中的ValidateFlags会先行校验取值非法值会直接报错合法值空跳过打印、json、yaml、table特例table格式不支持install命令随后PrintWithFormat根据格式分发table走printTable按资源类型生成metav1.Table并交给 Kubernetes 的printers.NewTablePrinter渲染json/yaml走printEncoded通过encode.Encode输出。一个值得一提的行为是当列表只包含 1 个对象时printEncoded会直接打印该对象本身而不是包一层 List便于脚本解析。4.2 标签选择器-l, --selector以 pkg/cmd/cli/backup/get.go 为例选择器字符串通过 Kubernetes 的labels.Parse解析为labels.Selector再作为ListOptions.LabelSelector传给 controller-runtime 客户端执行parsedSelector, err : labels.Parse(listOptions.LabelSelector) cmd.CheckError(err) err kbClient.List(context.TODO(), backups, kbclient.ListOptions{ LabelSelector: parsedSelector, Namespace: f.Namespace(), })也就是说-l的筛选发生在API Server 侧而非本地过滤语法遵循 Kubernetes 标准标签选择器如keyvalue、key in (v1,v2)、!key。4.3 指定名称查询与列表两种路径从backup/get.go、restore/get.go、schedule/get.go的实现可以看出一条共同的执行逻辑带位置参数时逐个按名字Get不带参数时按标签选择器List。例如ark get backups b1 b2会依次获取名为b1、b2的两个备份对象并合并输出。此外backup 子命令通过cli.CompleteBackupNames(f)提供命令补全ValidArgsFunctionrestore、schedule 同理restore 子命令有一个细节处理若对象带删除时间戳DeletionTimestamp会在阶段Phase后追加(Deleting)标记见 pkg/cmd/cli/restore/get.go单对象表格打印时时间戳字段在未设置时统一显示为n/a见 output.go 中formatTimestamp的注释说明。4.4 表格列控制--label-columns与--show-labels这两个标志由output.BindFlags注册--label-columns别名-L可多次指定如-L label1 -L label2把指定标签渲染为独立列--show-labels在末列追加完整标签集合。它们最终被写入printers.PrintOptions{ShowLabels, ColumnLabels}由 Kubernetes 官方表格打印机统一渲染从而与kubectl的表格观感保持一致。五、子命令注册与别名从ark get到velero get当前仓库的 pkg/cmd/cli/get/get.go 完整展示了get命令族的注册逻辑NewCommand依次挂载 backups、schedules、restores、backup-locations、snapshot-locations、plugins 六个子命令并为每个子命令设置单数形式别名backupCommand : backup.NewGetCommand(f, backups) backupCommand.Aliases []string{backup} scheduleCommand : schedule.NewGetCommand(f, schedules) scheduleCommand.Aliases []string{schedule} restoreCommand : restore.NewGetCommand(f, restores) restoreCommand.Aliases []string{restore}这也验证了 ark.md 中ark get backup与ark backup get等价的说明——Aliases使得两种书写方式均可命中同一实现。相比 v0.7.0 文档仅收录 backups/restores/schedules 三个子命令当前代码已扩展出 backup-locations、snapshot-locations、plugins 等查询入口对应velero get backup-locations、velero get snapshot-locations、velero get plugins使用velero get --help或ark get --help即可查看本版本实际支持的全部子命令。单元测试方面pkg/cmd/cli/backup/get_test.go 中的TestNewGetCommand展示了标准验证方式在 fake client 中创建多个带标签的备份对象调用NewGetCommand并执行随后断言输出中对象数量与名称一致——可作为理解该命令输出行为的可复现参考。六、相关命令导航SEE ALSOark get处于查询命令族的核心位置官方文档提供的关联入口如下均已转换为仓库根目录相对路径ark —— Back up and restore Kubernetes cluster resources.根命令含全部全局选项ark get backups —— Get backupsark get restores —— Get restoresark get schedules —— Get schedules若需要更详细的单资源信息可进一步使用配套的ark describe backups、ark describe restores、ark describe schedules命令族完整的命令清单与运行方式说明见 README.md其中指出可通过各命令的--help标志随时在 CLI 内查阅完整的 flags 清单。七、小结ark get是 Velero/Ark 日常巡检与排障的高频命令通过-l标签选择器精准过滤、-o json|yaml切换结构化输出、--label-columns/--show-labels自定义表格列再配合-n指定命名空间即可快速掌握集群中备份、恢复与调度计划的状态全貌。其kubectl 风格的命令模型、统一的标志绑定output.BindFlags与 controller-runtime 客户端调用链也使其成为理解整个 Velero CLI 架构的最佳入口之一——当你在新版 CLI 中敲下velero get时底层执行的正是同一套查询逻辑。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考