84 lines
4.1 KiB
Plaintext
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完成后将不会被保留 |