Files
k8s-note/k8s知识笔记/二、k8s pod 控制器/6、cronjob控制器.conf
2025-10-11 00:03:17 +08:00

84 lines
4.1 KiB
Plaintext

一、cronjob控制器简介
CronJob管理基于时间的Job,即:
* 在给定时间点只运行一次
* 周期性地在给定时间点运行
使用条件:当前使用的Kubernetes集群,版本>=1.8(对CronJob)
典型的用法如下所示:
* 在给定的时间点调度Job运行
* 创建周期性运行的Job,例如:数据库备份、发送邮件
* 创建周期性运行的任务,例如:定期清理临时文件
#-----------------------------------------------------------------------------------------------
CronJob 控制器用于在 Kubernetes 集群中定期运行任务。它类似于传统的 cron 作业, 但具有更强大的功能和灵活性。CronJob 控制器允许用户定义定时任务的调度时间、任务执行的命令或脚本, 以及任务的并发策略等。
CronJob 控制器通过创建和管理 Job 资源来实现定期任务的执行。每当达到预定的时间点时, CronJob 控制器会创建一个新的 Job 资源, Job 资源负责实际执行任务。用户可以通过配置 CronJob 的 spec 字段来定义任务的调度规则和执行细节。
CronJob 控制器支持多种调度方式, 包括基于时间间隔的调度和基于特定时间点的调度。用户可以使用类似于 cron 表达式的语法来定义调度规则, 例如 "0 0 * * *" 表示每天午夜执行一次任务。
除了基本的调度功能外, CronJob 控制器还提供了一些高级功能, 例如并发策略、失败重试机制和历史记录保留等。用户可以根据需要配置这些选项, 以满足不同的任务执行需求。
总之, CronJob 控制器是 Kubernetes 中用于管理定期任务的重要组件, 它简化了任务调度和执行的过程, 提高了系统的自动化水平和可靠性。
#-----------------------------------------------------------------------------------------------
二、CronJob 常用命令
# 创建 CronJob
kubectl apply -f cronjob.yaml
# 查看 CronJob 列表
kubectl get cronjob
# 查看特定 CronJob 的详细信息
kubectl describe cronjob <cronjob-name>
# 删除 CronJob
kubectl delete cronjob <cronjob-name>
# 查看由 CronJob 创建的 Job 列表
kubectl get jobs
# 查看由 Job 创建的 Pod 列表
kubectl get pods --selector=job-name=<job-name>
# 查看特定 Pod 的日志
kubectl logs <pod-name>
# 手动触发 CronJob 创建一个 Job
kubectl create job --from=cronjob/<cronjob-name> <new-job-name>
#-----------------------------------------------------------------------------------------------
三、CronJob 控制器资源清单
资源清单字段:
.spec.schedule: 调度, 必需字段, 指定任务运行周期, 格式同Cron
.spec.jobTemplate: Job模板, 必需字段, 指定需要运行的任务, 格式同Job
.spec.startingDeadlineSeconds: 启动Job的期限(秒级别),
该字段是可选的
如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的
如果没有指定,则没有期限
.spec.concurrencyPolicy: 并发策略
该字段也是可选的。它指定了如何处理被CronJob创建的
Job的并发执行, 只允许指定下面策略中的一种:
Allow(默认): 允许并发运行Job
Forbid: 禁止并发运行, 如果前一个还没有完成, 则直接跳过下一一个
Replace: 取消当前正在运行的Job, 用一个新的来替换
注意, 当前策略只能应用于同一个CronJob创建的Job, 如果果存在多个CronJob, 它们创建的Job之间总是允许并发运行。
.spec.suspend: 挂起, 该字段也是可选的。
如果设置为'true',后续所有执行都会被挂起。它对已经开始执行的Job不起作用。默认值为'false'
.spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit: 历史限制, 是可选的字段。
它们指定了可以保留多少完成和失败的Job。默认情况下,它们分别设置为'3'和'1'。设置限制的值为'0',相关类型的Job完成后将不会被保留