ARTICLE DETAIL

资讯详情

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

Ark (Velero) CLI 的 `ark get` 命令详解:查询备份、恢复与调度任务

Ark (Velero) CLI 的 `ark get` 命令详解:查询备份、恢复与调度任务 Ark (Velero) CLI 的ark get命令详解查询备份、恢复与调度任务【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero导读本文围绕 ArkVelero 前身CLI 中的ark get命令展开系统讲解该命令的语法、全局参数、三个核心子命令ark get backups、ark get restores、ark get schedules的用法并结合当前仓库中pkg/cmd/cli/get/get.go等源码剖析其底层查询与输出实现。阅读本文后你将能够熟练使用ark get系列命令快速查看 Kubernetes 集群中的备份、恢复与定时调度资源并掌握-l标签过滤、-o输出格式等高级选项的实战用法。命令概述ark get能做什么ark get是 Ark 命令行工具中用于查询 Ark 管理资源的统一入口命令。按照官方参考文档 site/content/docs/v0.6.0/cli-reference/ark_get.md 的说明其 Synopsis 为Get ark resources与kubectl的使用习惯一致Ark 采用了类似的命令模型。父命令 ark.md 中明确说明Ark 支持类似 kubectl 的两种动词-资源顺序例如ark get backup与ark backup get等价、ark create schedule与ark schedule create等价。因此ark get backups与ark backup get指向同一条命令你可以根据自己的命令行习惯任选其一。命令语法与参数基础语法ark get [command]ark get本身是一个分组命令需要携带子命令才能实际查询资源。文档中列出的ark get自身选项仅有帮助参数参数说明-h, --help显示get命令的帮助信息继承自父命令的全局参数以下参数来自ark根命令作用于包括ark get及其子命令在内的所有命令主要用于连接 Kubernetes API Server 与日志输出控制参数默认值说明--alsologtostderr—同时将日志输出到标准错误和日志文件--kubeconfig string环境变量KUBECONFIG或集群内配置用于连接 Kubernetes apiserver 的 kubeconfig 文件路径未设置时依次尝试KUBECONFIG环境变量和集群内配置--log_backtrace_at traceLocation:0当日志在 file:N 位置触发时输出堆栈追踪--log_dir string空若指定则在该目录中写入日志文件--logtostderr—将日志输出到标准错误而非文件--stderrthreshold severity2达到或超过该级别的日志输出到 stderr-v, --v Level—V 级别日志的日志级别--vmodule moduleSpec—以逗号分隔的 patternN 列表按文件过滤日志级别这些参数与标准 glog 风格的日志参数一致日常使用中通常无需修改仅当排查 Ark server 与 CLI 交互问题或调试插件时才有必要调整日志级别。核心子命令一查询备份ark get backups用法与参数ark get backups [flags]该子命令用于列出或按名称查询当前 Velero 命名空间下的 Backup 资源支持的选项如下详见 ark_get_backups.md参数默认值说明-h, --help—显示帮助信息--label-columns stringArray空以逗号分隔的标签列表作为列显示在输出表格中-o, --output stringtable输出格式可选table、json、yaml对 create 类命令则只显示对象而不提交到服务器-l, --selector string空只显示匹配该标签选择器的条目--show-labels—在最后一列显示标签使用示例# 列出全部备份 ark get backups # 按名称查询单个备份可同时传多个名称 ark get backups my-backup-20260915 # 只显示带 appnginx 标签的备份 ark get backups -l appnginx # 以 YAML 格式输出便于脚本处理 ark get backups -o yaml # 将指定标签作为额外列展示 ark get backups --label-columns app,env --show-labels底层实现解读从当前仓库源码 pkg/cmd/cli/backup/get.go 可以看到该命令的实际执行逻辑当命令携带名称参数len(args) 0时对每个名称通过kbClient.Get逐一查询单个 Backup 对象pkg/apis/velero/v1下的api.Backup并追加到结果列表未携带名称时则解析-l传入的LabelSelector通过kbClient.List拉取命名空间f.Namespace()下的全部 Backup 列表最终调用output.PrintWithFormat按用户指定的table/json/yaml格式渲染输出。对应的单元测试 pkg/cmd/cli/backup/get_test.go 验证了两条路径既测试了通过名称b1、b2、b3逐个查询的输入也测试了通过-l abcabc标签选择器过滤的输入并且断言输出行中包含了与输入数量一致的备份条目说明按名查询与按标签查询两种模式都经过测试覆盖。核心子命令二查询恢复任务ark get restoresark get restores [flags]该子命令用于查看集群中的 Restore 资源其参数与ark get backups一致同样支持-l/--selector、-o/--output、--label-columns、--show-labels。一个值得注意的细节是恢复任务的生命周期展示。从源码 pkg/cmd/cli/restore/get.go 可以看到命令在渲染输出前会遍历每个 Restore 对象若其DeletionTimestamp非零即正处于删除流程中则会在其Status.Phase后追加(Deleting)标记。这意味着当你看到某恢复任务的状态为Completed (Deleting)时表示该恢复已完成但正等待最终清理这在排查资源回收问题时是一个有用的状态线索。核心子命令三查询调度计划ark get schedulesark get schedules [flags]该子命令用于列出 Schedule 资源即按 Cron 表达式周期触发备份的调度任务参数同样与前述子命令一致。从源码 pkg/cmd/cli/schedule/get.go 可见其实现与 backups/restores 完全同构按名称时逐个Get未指定名称时用labels.NewSelector()构造默认选择器并在有-l参数时解析用户选择器后执行List。Schedule 与 Backup 的关联在于一个 Schedule 每次按计划触发都会生成一个新的 Backup 对象。因此实际运维中常用ark get schedules确认调度是否生效再配合ark get backups检查该调度近期产出的备份实例及其状态。子命令体系一览ark get挂载了三个子命令本文所涉文档位于 site/content/docs/v0.6.0/cli-reference/ 目录相互之间的导航关系如下ark_get.md本文主题ark get父命令ark_get_backups.mdark get backupsark_get_restores.mdark get restoresark_get_schedules.mdark get schedules从源码看命令注册get 如何挂载子命令虽然 v0.6.0 文档使用的是ark这一早期命名但当前仓库已将 CLI 演进为velero且get命令的子命令集合在演进中得到了扩展。从 pkg/cmd/cli/get/get.go 的NewCommand函数可以看到get命令注册的全部子命令及其别名Aliases子命令别名作用backupsbackup查询备份schedulesschedule查询调度计划restoresrestore查询恢复任务backup-locationsbackup-location查询备份存储位置snapshot-locationssnapshot-location查询快照位置pluginsplugin查询已加载插件这正是 ark.md 中所述动词-资源两种顺序等价设计的具体体现每个子命令都注册了单数形式的别名因此velero get backups与velero backup get、velero get restore与velero restore get均可互换使用。当在后续 Velero 版本中使用本命令时只需将ark替换为velero其余语法保持一致。实战排查场景结合上述知识推荐以下日常操作组合# 1. 确认调度计划是否存在、是否启用 ark get schedules # 2. 查看某调度生成的备份及其阶段状态 ark get backups -l schedule-namenightly-backup # 3. 以 JSON 格式提取备份详情交给脚本解析 ark get backups nightly-backup-20260915 -o json # 4. 查看恢复进度留意 (Deleting) 后缀 ark get restores备份、恢复、调度三类资源的状态字段如备份的Completed、Failed恢复的InProgress、Completed均可通过ark get的表格输出直观查看配合-l标签过滤可在大规模集群中快速定位目标对象需要机器可读结果时-o json或-o yaml是最佳选择。小结ark get是 Ark/Velero 中查询资源状态的核心入口它通过backups、restores、schedules三个基础子命令覆盖了备份运维中最常用的三类资源支持按名称精确查询与按标签批量过滤两种模式并提供table/json/yaml三种输出格式。其底层实现pkg/cmd/cli/get/get.go通过 controller-runtime 客户端直接访问 Kubernetes API对每个名称调用Get、对列表场景调用List逻辑简洁且与 kubectl 的使用体验保持一致。掌握该命令族即可高效完成 Velero 日常备份与恢复的状态巡检工作。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表