Velero 定时备份命令参考:create schedule 从 Cron 表达式到 Schedule CRD 的完整解析

发布时间:2026/11/12 6:35:10

Velero 定时备份命令参考:create schedule 从 Cron 表达式到 Schedule CRD 的完整解析 Velero 定时备份命令参考create schedule 从 Cron 表达式到 Schedule CRD 的完整解析【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本文基于 Velero v0.5.0 时期文档ark create scheduleCLI 参考页编写完整覆盖该命令的用法、全部选项及其继承的全局选项并结合当前仓库的 create.go 与 schedule_types.go 源码讲清该命令如何把命令行参数映射为 Schedule CRD 对象、以及定时备份的生命周期机制。读完后你可以直接用该命令创建周期性备份并理解每个选项在 API 对象中的落点。1. 命令概述从 ark 到 velero在 Velero 0.5.0 时代CLI 二进制名为ark创建定时备份的命令为ark create schedule。随着项目更名当前仓库中该命令的等价形式是velero create schedule命令实现位于 pkg/cmd/cli/schedule/create.go。命令的基本用法为velero create schedule NAME [flags]v0.5.0 文档中写作ark create schedule NAME [flags]见 ark_create_schedule.md。从源码结构看cobra 命令的Use字段声明为use NAME --schedulecreate.go#L42且Args校验为cobra.ExactArgs(1)create.go#L69即必须且只能提供一个 Schedule 名称--schedule表达式则是必填项Validate中若其长度为 0 会直接报错--schedule is requiredcreate.go#L110-L116。2. 完整选项参考v0.5.0 文档版以下为 v0.5.0 官方文档中create schedule的全部选项逐项继承不删减。stringArray、optionalBool等类型标记来自 pflag/cobra 的自动文档生成选项类型说明默认值--exclude-namespacesstringArray要从备份中排除的命名空间—--exclude-resourcesstringArray要从备份中排除的资源格式为 resource.group如storageclasses.storage.k8s.io—-h, --help—schedule 的帮助信息—--include-cluster-resourcesoptionalBool在备份中纳入集群级cluster-scoped资源trueoptionalBool[true]--include-namespacesstringArray要纳入备份的命名空间用*表示全部*--include-resourcesstringArray要纳入备份的资源格式为 resource.group如storageclasses.storage.k8s.io用*表示全部资源—--label-columnsstringArray以列形式展示的标签的逗号分隔列表—--labelsmapStringString应用到备份上的标签—-o, --outputstring输出显示格式。对 create 类命令仅打印对象但不提交到服务端。可用格式为table、json、yaml—--schedulestring以 cron 表达式指定该备份的周期性计划—-l, --selectorlabelSelector仅备份匹配该标签选择器的资源none--show-labels—在最后一列显示标签—--snapshot-volumesoptionalBool备份时是否对 PersistentVolume 做快照trueoptionalBool[true]--ttlduration备份在被垃圾回收之前可以存活多久24h0m0s2.1 继承自父命令的选项v0.5.0 文档列出的继承自父命令的全局选项如下均为 glog 日志与 kubeconfig 相关选项说明默认值--alsologtostderr日志同时输出到标准错误与文件—--kubeconfig与 Kubernetes apiserver 通信所用 kubeconfig 文件路径。若未设置则尝试环境变量KUBECONFIG以及集群内配置—--log_backtrace_at当日志命中 file:N 这一行时输出堆栈跟踪:0--log_dir若非空日志文件写入该目录—--logtostderr日志输出到标准错误而非文件—--stderrthreshold达到该阈值及以上的日志写入 stderr2-v, --vV 级别日志的日志等级—--vmodule用于文件级过滤日志的patternN逗号分隔列表—2.2-o选项的行为印证文档说明-o对 create 命令“打印对象但不提交服务端”。这一点在源码中得到印证Run中先调用output.PrintWithFormat(c, schedule)若printed为 true 则直接return不再执行后续的crClient.Createcreate.go#L184-L191。因此velero create schedule daily -o yaml是一个安全的“干跑”方式可用于审查即将创建的 Schedule 对象。3. 调度表达式cron 五段式与 every命令的 Long 描述create.go#L44-L56明确了两点cron 表达式使用 UTC 时间且支持every duration语法。3.1 cron 表达式字段字符位置字段含义可接受值1分钟 (Minute)0-59, *2小时 (Hour)0-23, *3日 (Day of Month)1-31, *4月 (Month)1-12, *5星期 (Day of Week)0-6, *3.2 every 语法除标准 cron 外表达式还可以写成every duration形式duration 由秒s、分m、时h组合而成例如every 2h30m。3.3 官方示例以下 4 个示例直接取自命令实现的Example字段create.go#L58-L68覆盖两种表达式风格与过滤、TTL 组合# 每 6 小时创建一次备份cron 五段式。 velero create schedule NAME --schedule0 */6 * * * # 用 every 记法实现同样的每 6 小时一次。 velero create schedule NAME --scheduleevery 6h # 每天备份 web 命名空间。 velero create schedule NAME --scheduleevery 24h --include-namespaces web # 每周备份一次每个备份保留 90 天2160 小时。 velero create schedule NAME --scheduleevery 168h --ttl 2160h0m0s4. 源码级实现选项如何变成 Schedule 对象4.1 选项结构复用 backup 的 CreateOptionscreate schedule的选项结构体CreateOptions内嵌了备份命令的BackupOptionscreate.go#L87-L93。这正是第 2 节那些 namespace/resource/labels/ttl 等选项与backup create完全一致的原因——调度命令本质上是一个“带模板的备份工厂”type CreateOptions struct { BackupOptions *backup.CreateOptions SkipOptions *SkipOptions Schedule string UseOwnerReferencesInBackup bool Paused bool }BindFlagscreate.go#L102-L108在复用备份选项之外额外绑定三个调度专属参数新增选项类型说明--schedulestringcron 表达式指定周期性计划--use-owner-references-in-backupbool是否为该 Schedule 生成的 Backup 设置 OwnerReferences。注意设为 true 后删除 schedule 会连带删除其生成的备份--pausedbool新建的 schedule 是否处于暂停状态备份侧选项的完整绑定逻辑见 backup/create.go#L144-L181例如--snapshot-volumes与--include-cluster-resources都通过NoOptDefVal cmd.TRUE实现了“单独写出--snapshot-volumes即等价于true”的 optionalBool 语义backup/create.go#L163-L175与 v0.5.0 文档中optionalBool[true]的类型标记相互印证。4.2 执行流程组装 spec 并提交Run函数create.go#L122-L195的核心流程从client.Factory获取 kubebuilder client将各选项值逐一映射进api.Schedule.Spec--include-namespaces→Template.IncludedNamespaces--exclude-namespaces→Template.ExcludedNamespaces--include-resources/--exclude-resources→Template.IncludedResources/Template.ExcludedResources-l选择器 →Template.LabelSelector--snapshot-volumes→Template.SnapshotVolumes--ttl→Template.TTL以及命名空间固定为 factory 的f.Namespace()即 velero 部署所在命名空间通常为velerov0.5.0 时代为ark将--schedule表达式写入Spec.Schedule同时写入UseOwnerReferencesInBackup与Paused支持-o干跑后直接返回否则调用crClient.Create提交成功时打印Schedule %q created successfully.create.go#L193。其中Template的类型就是BackupSpeccreate.go#L143-L166也就是说 Schedule 的 spec 模板与一次普通备份的 spec 完全同构——定时备份每次触发时服务端即按此模板实例化出一个具体的 Backup。5. Schedule CRD字段、阶段与打印列调度资源的 API 定义在 pkg/apis/velero/v1/schedule_types.go。5.1 ScheduleSpec 字段字段类型说明源码注释摘译templateBackupSpec将在给定计划上执行的备份定义schedule_types.go#L28-L30schedulestring定义备份运行时间的 Cron 表达式useOwnerReferencesInBackup*bool是否为生成的备份使用 OwnerReferencespausedbool该 schedule 是否被暂停skipImmediately*bool新建或取消暂停时若已到期是否跳过本次、顺延到下个计划时间为空时跟随服务端配置默认 falseschedule_types.go#L46-L515.2 生命周期阶段与状态SchedulePhase为枚举类型取值三个schedule_types.go#L56-L71NewSchedule 已创建但尚未被 ScheduleController 处理Enabled已通过校验将按计划触发备份FailedValidation未通过控制器校验不会触发备份。ScheduleStatus记录phase、lastBackup上次运行备份的时间、lastSkipped上次跳过时间与validationErrorsschedule_types.go#L74-L94。5.3 kubectl 打印列与命名规则从 kubebuilder 注解可见kubectl get sched会额外展示 Status、Schedule、LastBackup、Age、Paused 五列且资源短名为schedschedule_types.go#L102-L107。另有一个值得注意的实现细节由 schedule 派生的备份命名通过TimestampedName生成格式为schedule名-YYYYMMDDHHMMSSschedule_types.go#L138-L141这解释了为什么每次定时触发的备份名都带 14 位 UTC 时间戳后缀。6. v0.5.0 文档与当前仓库的差异说明v0.5.0 文档反映的是ark时期的选项集当前仓库实现veleroCLI在其上做了扩展阅读旧文档对照源码时需注意新增调度选项--paused、--use-owner-references-in-backup以及SkipOptions引入的--skip-immediatelycreate.go#L102-L108新增备份模板选项--storage-location、--volume-snapshot-locations并注册了名称补全函数create.go#L81-L82、细粒度资源过滤--include-cluster-scoped-resources等与旧参数互斥互斥校验见 backup/create.go#L235-L239、--ordered-resources、--resource-policies-configmap等默认值演变v0.5.0 文档标注--ttl默认24h0m0s当前源码中该 flag 以CreateOptions的零值作为默认绑定backup/create.go#L145因此以当前仓库为准的默认行为可能不同使用时建议显式指定--ttl选项归属变化--label-columns、--show-labels属于 v0.5.0 文档中的 get 类展示选项当前 create 命令并未绑定。7. 相关命令SEE ALSO按 v0.5.0 文档的 SEE ALSO 指向调度相关的命令族包括均以仓库根目录相对路径给出ark create — 创建 ark 资源ark schedule — 管理 schedulesark schedule create — 创建 scheduleark schedule get / ark schedule delete — 查看与删除 schedule。结合当前仓库创建后还可通过velero backup create --from-schedule name立即按该模板手动触发一次备份见 backup/create.go#L291-L293 的--from-schedule定义。8. 小结create schedule命令的价值在于把“备份范围选项”与“调度策略”合并成一个声明式资源所有过滤选项namespaces/resources/selector/labels/ttl原样落入spec.template调度表达式落入spec.schedule最终由服务端控制器按 cronUTC周期实例化 Backup。掌握第 2 节的完整选项表、第 3 节的两种表达式写法以及第 5 节的 CRD 阶段与状态字段即可独立完成从创建、干跑校验-o yaml、查看阶段kubectl get sched到暂停/删除的全流程操作。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/25 9:09:27

Betterfox 完整指南:如何五步给 Firefox 提速并加固隐私

Betterfox 完整指南:如何五步给 Firefox 提速并加固隐私 【免费下载链接】Betterfox Firefox user.js for optimal privacy and security. Your favorite browser, but better. 项目地址: https://gitcode.com/GitHub_Trending/be/Betterfox Firefox 启动迟缓…

2026/11/12 6:34:25

银川电工证7天出证多少钱?证书过期了不知道怎么复审延期

银川电工证7天出证多少钱?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?银川电工证7天出证多少钱?你不是一个人,很多在一线的电工、焊工、高处作业人员,都曾遇到过这样的困扰。别急,下面我从实战角度,告诉你如何搞定电工证的复审、报…

2026/11/12 6:34:25

银川代办电工证过期怎么复审?2026河南最新政策全解析

银川代办电工证过期怎么复审?2026河南最新政策全解析 证书过期了不知道怎么复审延期?银川代办电工证正在成为越来越多从业者关心的问题。2026年河南最新政策明确,特种作业操作证有效期为3年,到期必须复审,否则将被视为无证上岗,面临停岗、罚款…

2026/11/12 6:34:25

北京报高压电工证条件怎么填?官方报名入口+流程全解析

北京报高压电工证条件怎么填?官方报名入口+流程全解析 证书过期了不知道怎么复审延期?别急,本文从 北京报高压电工证条件 入手,带你看清报考、复审、流程和避坑技巧,特别是 官方报名入口 在哪,怎么用,还有安阳公路工程从业者的真实案例。…

2026/11/12 6:34:25

金华市电工证办理千万别踩坑:外省证书怎么转过来?

金华市电工证办理千万别踩坑:外省证书怎么转过来? 之前考的证在外省能不能转过来?这可能是你最关心的问题,也是不少特种作业从业者在办理金华市电工证办理时最容易踩的坑。别急,今天咱们就从实际出发,手把手告诉你怎么把外省证书转过来,还能在金华市顺…

2026/11/12 6:29:25

宿迁考电工证报名地点怎么报名实操考试怕挂科?过来人给你支招

宿迁考电工证报名地点怎么报名实操考试怕挂科?过来人给你支招 实操考试心里没底怕挂科,这种焦虑我懂,我自己当初就是踩着坑一步步走过来的。在宿迁考电工证报名地点怎么报名,这个问题困扰了我整整一周,现在回想起来,其实很多信息都能提前搞清楚。如果你…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑