简介
一个 CronJob 对象类似于 crontab(cron table)文件中的一行,它根据指定的预定计划周期性地运行一个 Job。
CronJob 控制台操作指引
创建 CronJob
1. 登录容器服务控制台,选择左侧导航栏中的 集群。
2. 在集群管理页面,选择集群 ID,进入集群的基本信息页面。
3. 在左侧导航栏选择工作负载,在 CronJob 页面,单击新建。
4. 在新建工作负载页面,根据实际需求,设置 CronJob 参数。关键参数信息如下:
名称:自定义。
命名空间:根据实际需求进行选择。
Labels:用于资源分类管理的键值对(Key-Value)。
Annotations:Kubernetes 注解为资源附加任意的非标识的元数据。
定时规则:根据业务需求选择任务的定期执行策略。
保留成功 Job 数:对应
.spec.successfulJobsHistoryLimit
,详情见 Jobs History Limits。保留失败 Job 数:对应
.spec.failedJobsHistoryLimit
,详情见 Jobs History Limits。Job 设置:
重复次数:Job 管理的 Pod 需要重复执行的次数。
并行度:Job 并行执行的 Pod 数量。
失败重启策略:Pod下容器异常退出后的重启策略。
Never:不重启容器,直至 Pod 下所有容器退出。
OnFailure:Pod 继续运行,容器将重新启动。
可抢占:可抢占类型的 Job 类工作负载,不会占用节点实际的可调度资源,但在发生资源竞争时,资源会被优先回收。详情请参见 可抢占式 Job。
数据卷(选填):为容器提供存储,目前支持临时路径、主机路径、云硬盘数据卷、文件存储 NFS、配置文件、PVC,还需挂载到容器的指定路径中。
实例内容器:根据实际需求,为 CronJob 的一个 Pod 设置一个或多个不同的容器。
名称:自定义。
镜像:根据实际需求进行选择。
镜像版本:根据实际需求进行填写。
镜像拉取策略:提供以下3种策略,请按需选择。若不设置镜像拉取策略,当镜像版本为空或
latest
时,使用 Always 策略,否则使用 IfNotPresent 策略。Always:总是从远程拉取该镜像。
IfNotPresent:默认使用本地镜像,若本地无该镜像则远程拉取该镜像。
Never:只使用本地镜像,若本地没有该镜像将报异常。
CPU/内存限制:可根据 Kubernetes 资源限制 设置 CPU 和内存的限制范围,提高业务的健壮性。
GPU 资源:配置该工作负载使用的最少 GPU 资源。
高级设置:可设置工作目录、运行命令、运行参数、容器健康检查和特权级等参数。
镜像访问凭证:容器镜像默认私有,在创建工作负载时,需选择实例对应的镜像访问凭证。
节点调度策略:可根据调度规则,将 Pod 调度到符合预期的 Label 的节点中。
5. 单击创建 CronJob,完成创建。
查看 CronJob 状态
1. 登录容器服务控制台,选择左侧导航栏中的 集群。
2. 在集群管理页面,选择集群 ID,进入集群的基本信息页面。
3. 在左侧导航栏选择工作负载,在 CronJob 页面,单击需要查看状态的 CronJob 名称,即可查看 CronJob 详情。
kubectl 操作 CronJob 指引
YAML 示例
apiVersion: batch/v1kind: CronJobmetadata:name: hellospec:schedule: "*/1 * * * *"jobTemplate:spec:template:spec:containers:- name: helloimage: busyboxargs:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailure
kind:标识 CronJob 资源类型。
metadata:CronJob 的名称、Label等基本信息。
metadata.annotations:对 CronJob 的额外说明,可通过该参数设置腾讯云 TKE 的额外增强能力。
spec.schedule:CronJob 执行的 Cron 的策略。
spec.jobTemplate:Cron 执行的 Job 模板。
创建 CronJob
方法一
1. 参考 YAML 示例,准备 CronJob YAML 文件。
2. 安装 kubectl,并连接集群。操作详情请参考 通过 kubectl 连接集群。
3. 执行以下命令,创建 CronJob YAML 文件。
kubectl create -f <CronJob YAML 文件名称>
例如,编辑文件,执行以下命令:
vim cronjob.yaml
创建一个文件名为 cronjob.yaml 的 CronJob YAML 文件,则执行以下命令:
kubectl create -f cronjob.yaml
方法二
1. 通过执行
kubectl run
命令,快速创建一个 CronJob。
例如,快速创建一个不需要写完整配置信息的 CronJob,则执行以下命令:kubectl create cronjob hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello"
2. 执行以下命令,验证创建是否成功。
kubectl get cronjob [NAME]
返回类似以下信息,即表示创建成功。
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGEcronjob * * * * * False 0 <none> 15s
删除 CronJob
注意:
执行此删除命令前,请确认是否存在正在创建的 Job,否则执行该命令将终止正在创建的 Job。
执行此删除命令时,已创建的 Job 和已完成的 Job 均不会被终止或删除。
如需删除 CronJob 创建的 Job,请手动删除。
执行以下命令,删除 CronJob。
kubectl delete cronjob [NAME]