最近更新时间:2021-03-03 10:31:49
在Job仅执行一次任务的基础上,CronJob增加了时间调度,适合应用于在给定的时间点执行一个任务,或者周期性的在某时间点进行一个任务。
本模块提供了基于Kubernetes原生的CronJob的创建、配置、删除等生命周期的管理指南。
您可以通过以下步骤在容器服务控制台通过镜像创建一个CronJob:
以下为创建过程中的配置详情:
在多个Job按照定时规则执行时,若新任务开始时旧任务还未完成,支持从以下三种模式中选择新旧任务的并发策略:
默认并发策略为“Allow”。
指定新建定时任务在何时执行。根据5位Cron表达式输入定时策略,5位分别代表“分 时 日 月 周”,如“* */1 * * *”表示每小时执行一次。
# 5位cron表达式格式说明
# ——分(0 - 59)
# | ——时(0 - 23)
# | | ——日(1 - 31)
# | | | ——月(1 - 12)
# | | | | ——周 (0 - 7) (Sunday=0 or 7)
# | | | | |
# * * * * *
根据实际需求,您可以设置Cronjob中每次执行Job的关键参数:
目前支持使用主机路径、本地路径、金山云云硬盘、文件存储、已有PVC等存储类型。
备注:
使用本地硬盘时,若不指定源路径,则默认分配临时路径(对应k8s存储中EmpytDir)。
当使用云硬盘作为存储卷时,存储卷的名称为云硬盘的id,不可修改。
目前支持从私有镜像仓库拉取镜像时,为容器配置镜像访问凭证(对应yaml中的imagePullSecret)。
配置完成后,点击创建,返回CronJob列表页面,查询CronJob的状态。
创建Cronjob后,若您想要运行/停止某个Cronjob,可以在Cronjob列表中对该Cronjob执行运行或停止操作。
点击Cronjob列表中某Cronjob名称,可至Cronjob任务列表页查看Cronjob中已创建的Job的运行状态。点击任务列表中的任务名称可进入对应Job的详情页。
点击CronJob列表中的删除,执行删除CronJob的操作。
若需要删除Cronjob中某单个Job,可进入该Cronjob任务列表点击删除,实现该Job相关资源的删除。
在CronJob列表页面,可以通过YAML创建资源新建CronJob,也可以通过CronJob列表中的编辑YAML更新已有CronJob的配置。
以下提供一个YAML示例,创建一个每分钟输出问候语的定时任务。
hello-cronjob.yaml如下:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
创建Cronjob
# kubectl apply -f hello-cronjob.yaml
通过Kubectl run快速创建一个不需完整配置信息的Cronjob,命令如下:
kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello"
查看CronJob的状态
kubectl get cronjob
纯净模式