type
status
date
slug
summary
category
tags
create_time
Sep 25, 2025 11:16 AM
icon
password
my_create_time
📝 前言
在 Kubernetes 集群中,有些任务只需运行一次或定期运行,而非持续提供服务。
Job 与 CronJob 是为此场景设计的控制器:
- Job:一次性任务,保证指定数量的 Pod 成功完成。
- CronJob:基于 Job 的定时调度,按照指定时间周期创建 Job。
🧭 背景介绍
这里以青萍图床为案例进行介绍,青萍图床在每日凌晨需要:
- 生成用户的统计报表进行归档(统计今日上传数量和大小等)
- 生成会员每日账单并发送到青萍统一支付进行扣除余额(按流量计费)
- 清理 过期缓存与临时文件。
这里就可以使用 CronJob 设置每天 00:00 运行数据统计脚本,自动创建一个 Job;
而在手动执行临时数据修复脚本时,则直接创建单独的 Job 来确保任务只执行一次且成功结束,无需人工监控节点数量变化。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 Job?
Job 是一种 Kubernetes 工作负载,负责确保指定数量的 Pod 成功运行至完成。
- Pod 成功退出(
0
状态)即表示任务完成。
- 如果 Pod 异常退出,控制器会自动重试直至达到
backoffLimit
或完成所需成功次数。
关键特性如下:
- 保证任务至少成功运行指定次数。
- 可配置并行度
parallelism
与完成数completions
。
- 支持失败重试策略
backoffLimit
。
2️⃣ 什么是 CronJob?
CronJob 基于 Job,用于按照 类 crontab 语法 定时创建 Job。
- 类似 Linux
cron
,通过schedule
字段定义时间表达式。
- 每次触发时都会生成一个新的 Job 对象并执行相应 Pod。
关键特性如下:
- 定时调度,支持秒级到年级的灵活配置。
- 支持并发策略:
Allow
、Forbid
、Replace
控制新旧 Job 并发。
- 支持历史 Job 保留策略:
successfulJobsHistoryLimit
、failedJobsHistoryLimit
。
3️⃣ 工作流程
Job
- 用户提交 Job YAML。
- Job 控制器在 API Server 注册并创建所需 Pod。
- Pod 成功完成后,Job 状态更新为
Complete
。
- 若失败,控制器按
backoffLimit
自动重试。
CronJob
- 用户提交 CronJob YAML。
- CronJob 控制器按照
schedule
时间到达时创建一个新的 Job。
- Job 再按上面流程执行,完成后根据策略保留或清理。
大致流程图如下:

4️⃣ 实战示例
Job 示例:一次性数据库迁移
CronJob 示例:每日生成报表
字段说明:
- Job
completions
:完成任务的成功 Pod 总数(默认 1)。parallelism
:允许并行运行的 Pod 数。backoffLimit
:Pod 失败重试次数(默认 6)。restartPolicy
:通常为OnFailure
或Never
。
- CronJob
schedule
:定时任务表达式,遵循 Cron 语法。concurrencyPolicy
:Allow
:允许并发运行。Forbid
:禁止并发,新任务会跳过。Replace
:替换上一次仍在运行的 Job。successfulJobsHistoryLimit
/failedJobsHistoryLimit
:保留历史记录数量。
5️⃣ 常见问题与排查
- 任务未执行或时间不准
- 检查
schedule
表达式格式与时区设置。
- Job 一直失败
- 查看
kubectl logs
获取容器错误信息。 - 调整
backoffLimit
或排查镜像/命令。
- Pod 数量异常
- 检查
completions
与parallelism
是否配置合理。
- 历史 Job 堆积
- 合理设置
successfulJobsHistoryLimit
与failedJobsHistoryLimit
。
✅ 总结
Job 与 CronJob 是 Kubernetes 处理 一次性 和 周期性 工作的关键控制器。
- Job 负责确保任务执行成功,可设置并行度和重试策略。
- CronJob 基于 Job,实现灵活的定时调度。
合理配置
schedule
、concurrencyPolicy
与历史保留策略,能高效、安全地管理各种自动化任务。🔚 后记
至此 Kubernetes 资源介绍系列暂告一段落了,已经涵盖了日常开发与运维中最常用的核心对象,如 Deployment、StatefulSet、DaemonSet、Job/CronJob、ConfigMap、Secret、PV/PVC 等。
当然 Kubernetes 生态庞大,CRD、自定义控制器、StorageClass、NetworkPolicy 等仍有大量资源未深入介绍。
后续如有更深入的实践或扩展需求,可以结合实际场景继续探索官方文档与社区最佳实践。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/job-cronjob-resource-introduction
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。