尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Velero 前身 Ark 的定时备份查看命令:`ark schedule get` 完整使用指南

Velero 前身 Ark 的定时备份查看命令:`ark schedule get` 完整使用指南 Velero 前身 Ark 的定时备份查看命令ark schedule get完整使用指南【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本篇文章聚焦于当前仓库site/content/docs/v0.8.0/cli-reference/ark_schedule_get.md所讲解的ark schedule get命令。在 Velero当时名为 Heptio Arkv0.8.0 时代ark是唯一的命令行入口而ark schedule get用于以表格、JSON 或 YAML 格式查看集群中已创建的定时备份Schedule资源。读完本文你将掌握该命令的全部参数语义、与ark schedule create/describe/delete的配合方式以及它在源码与控制器中的底层行为。命令定位Schedule 是备份自动化的核心在 v0.8.0 中Schedule 是一个自定义资源CRD它把「cron 表达式 备份参数」绑定在一起一旦创建Ark 服务端就会周期性地检查所有 Schedule 对象当满足 cron 时间条件时自动发起一次备份。ark schedule get的作用就是列出这些 Schedule 资源及其当前状态属于日常巡检备份策略的第一步。该命令由ark schedule子命令树承载父命令定义见 site/content/docs/v0.8.0/cli-reference/ark_schedule.md其说明为 Work with schedules并聚合了create、delete、describe、get四个子命令。命令语法与 Synopsisark schedule get [flags]与ark backup get、ark restore get一致get不接收位置参数NAME而是将符合筛选条件的全部 Schedule 资源列表返回。这与describe不同——ark schedule describe [NAME1] [NAME2] [NAME...]需要显式指定名称见 site/content/docs/v0.8.0/cli-reference/ark_schedule_describe.md。参数详解Optionsark schedule get自身的参数如下参数类型默认值含义-h, --helpbool-显示get子命令的帮助信息--label-columns stringArraystring[]空逗号分隔的标签键列表这些标签将作为额外的列显示在输出表格中-o, --output stringstringtable输出展示格式合法值为table、json、yaml-l, --selector stringstring空仅显示匹配该标签选择器的 Schedule 资源--show-labelsboolfalse在表格最后一列展示资源的全部标签各参数要点如下--output-o默认以对齐的表格打印便于人眼阅读指定-o json或-o yaml时可获得完整的资源对象序列化结果适合脚本消费或与其他工具如jq、yq管道衔接。注意文档中特别说明对于create类命令-o json/yaml的含义是「显示对象但不发送到服务端」而get命令下则是直接输出服务端返回对象的序列化形式。--label-columns例如 Schedule 创建时打了envprod标签可用--label-columns env把该标签单独列为一列方便按环境快速区分多条备份策略。该参数可重复传入多次以同时显示多列。--selector-l与 Kubernetes 标签选择器语法一致如envprod、env!dev、env in (prod, staging)在客户端侧对返回列表做过滤。--show-labels在表格最右侧追加一列集中展示每个 Schedule 的全部标签keyvalue 形式逗号分隔。继承自父命令的全局参数ark schedule get还继承了所有ark命令共享的全局参数来自父命令链ark→ark schedule参数类型默认值含义--alsologtostderrbool-同时将日志写入文件与标准错误输出--kubeconfig stringstring空用于连接 Kubernetes apiserver 的 kubeconfig 文件路径未设置时依次尝试环境变量KUBECONFIG与集群内配置--kubecontext stringstring空指定要使用的 kubeconfig context未设置时使用kubectl config current-context的当前上下文--log_backtrace_at traceLocationstring:0当日志命中file:N时输出堆栈追踪--log_dir stringstring空非空时把日志文件写入该目录--logtostderrbool-日志直接输出到标准错误而非文件-n, --namespace stringstringheptio-arkArk 工作所在的 Kubernetes 命名空间--stderrthreshold severityint2达到或超过该阈值的日志输出到 stderr-v, --v Levelint0V 级别日志的详细程度--vmodule moduleSpecstring空按文件过滤的patternN日志级别设置其中-n, --namespace值得特别注意v0.8.0 版本 Ark 默认命名空间是heptio-arkark schedule get只会列出该命名空间下的 Schedule。这一行为与测试用例的断言一致——在 pkg/cmd/cli/schedule/get_test.go 中TestNewGetCommandListsOnlyTheVeleroNamespace明确验证了 get 命令只查询 VeleroArk命名空间。源码实现从命令注册到列表获取命令的注册与实现位于 pkg/cmd/cli/schedule/get.go核心入口为NewGetCommand(f client.Factory, use string) *cobra.Command。它被 pkg/cmd/cli/schedule/schedule.go 中的NewCommand挂载为ark schedule get子命令与NewDescribeCommand并列。从源码结构可以推断其典型执行链路NewGetCommand通过 Cobra 注册get命令及上述 flagslabel-columns、output、selector、show-labels运行时借助client.Factory构造 Ark 自定义资源的客户端调用 ScheduleList 的列表接口受-n/--namespace约束再按selector、label-columns、show-labels在展示层处理。同目录下的 pkg/cmd/cli/schedule/describe.go 与 pkg/cmd/cli/schedule/describe_test.go 则验证了describe的「按名称查看单个 Schedule 详情」行为可与get的「批量列表」形成互补。与创建命令配合理解你看到的输出Schedule 的输出内容直接源于ark schedule create时指定的参数。create命令要求--schedule参数必须是 cron 表达式其字段含义详见 site/content/docs/v0.8.0/cli-reference/ark_schedule_create.md字符位置时间周期可接受值1分钟0-59,*2小时0-23,*3日月中的某天1-31,*4月1-12,*5星期周中的某天0-7,*创建示例ark schedule create daily-backup --schedule0 */6 * * * --include-namespaces default --ttl 24h该命令会创建一个每日每 6 小时触发一次、只备份default命名空间、保留 24 小时的 Schedule。随后执行ark schedule get即可看到这条策略若想确认它具体触发了哪些 Backup可结合 site/content/docs/v0.8.0/cli-reference/ark_backup_get.md 中的ark backup get -l velero.io/schedule-namedaily-backup按 Schedule 标签过滤来追踪其产出的备份。标签选择器实战假设你维护了多条备份策略ark schedule create app-prod-nightly --schedule0 2 * * * --labels appweb,envprod ark schedule create app-staging-nightly --schedule0 3 * * * --labels appweb,envstaging ark schedule create db-prod-nightly --schedule30 2 * * * --labels appdb,envprod只看生产环境策略ark schedule get -l envprod只显示 web 应用策略并展示标签列ark schedule get -l appweb --label-columns env --show-labels输出机器可读格式ark schedule get -o json或ark schedule get -o yaml底层机制Schedule 如何被周期检查ark schedule get展示的是服务端 Schedule 资源的即时快照而这些资源之所以能产生定时备份依赖服务端的周期同步机制。在 pkg/controller/schedule_controller.go 中控制器定义了scheduleSyncPeriod time.Minute并通过kube.NewPeriodicalEnqueueSource以该周期对ScheduleList进行周期入队扫描pkg/controller/schedule_controller.go。也就是说Ark 服务端每分钟检查一次全部 Schedule判断是否有 cron 触发点需要发起备份。该同步周期也可通过 Ark 服务端配置覆盖。在 v0.8.0 中服务端配置是一个名为default的自定义 Config 资源位于heptio-ark命名空间其中的scheduleSyncPeriod键控制「Ark 检查 Schedule 资源以决定是否发起备份」的频率默认1m0s与之配套的backupSyncPeriod默认60m控制从对象存储同步已有备份文件、gcSyncPeriod默认60m控制清理超过 TTL 的备份文件。完整参数表见 site/content/docs/v0.8.0/config-definition.md。结合这两部分可以形成完整的认知闭环ark schedule get看到的是 Schedule 资源在 API 层面的状态而 Schedule 真正「跑起来」是靠服务端每分钟一次的周期扫描。修改 Config 中的scheduleSyncPeriod会影响该扫描频率。常见排查与使用建议看不到任何 Schedule先确认是否已用ark schedule create创建过资源再用ark schedule get -n heptio-ark显式指定命名空间检查当前 kubeconfig 上下文是否指向目标集群--kubecontext。需要了解某条策略的完整详情如包含/排除的资源、TTL、PV 快照开关改用ark schedule describe NAME其参数见 site/content/docs/v0.8.0/cli-reference/ark_schedule_describe.md。需要删除不再需要的策略使用ark schedule delete NAME入口见 site/content/docs/v0.8.0/cli-reference/ark_schedule.md 的父命令树。输出用于自动化-o json/-o yaml可配合jq等工具提取 Schedule 的spec.schedule、spec.template、status等字段做断言或监控。结语ark schedule get虽是一个仅 5 个自有参数的列表命令却是运维 Ark 定时备份体系的第一入口。结合--label-columns、--selector、--show-labels可以做精细化的策略筛选配合-o json/yaml可融入脚本自动化而其输出背后是每分钟一次的scheduleSyncPeriod周期扫描机制见 pkg/controller/schedule_controller.go。理解这一点你就能把「命令行看到什么」与「服务端如何执行」串成一条完整的链路。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表