定义
Cron VolcanoJob, 简称cronvcjob,cronvj,是Volcano自定义的资源类型。用户现在可以根据预定义的调度计划定期创建和运行Volcano Job,类似于Kubernetes原生的CronJob,以实现批量计算任务(如AI和大数据)的定期执行。
样例
apiVersion: batch.volcano.sh/v1alpha1
kind: CronJob
metadata:
name: volcano-cronjob-example
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: Forbid
startingDeadlineSeconds: 60
successfulJobsHistoryLimit: 5
failedJobsHistoryLimit: 3
jobTemplate:
spec:
schedulerName: volcano
tasks:
- replicas: 1
name: "task-1"
template:
spec:
containers:
- name: busybox-container
image: busybox:latest
command: ["/bin/sh", "-c", "date; echo Hello from Volcano CronJob"]
restartPolicy: OnFailure
policies:
- event: PodEvicted
action: RestartJob
minAvailable: 1
查看 Cron VolcanoJob
kubectl get cronvcjob
查看创建的 job 实例
kubectl get vcjob
关键字段
schedule
必需。用于volcano job 执行的 cron 计划字符串。使用标准 cron 格式。
timeZone
可选。调度计划的时区名称。默认为 kube-controller-manager 的本地时区。
concurrencyPolicy
可选。指定如何管理 Cron VolcanoJob 创建的 job 的并发执行。为下列规则中的一种:
- Allow(默认):允许并发运行
- Forbid:禁止并发运行,跳过新周期的执行
- Replace:取消当前运行的 job,并用新的 job 替换它
startingDeadlineSeconds
可选。如果 job 错过其计划时间,启动 job 的截止时间(秒)。
suspend
可选。如果设置为 true,所有后续执行将被暂停。
jobTemplate
必需。用于创建 Volcano Job 的模板。包含完整的 Volcano Job 规范。
successfulJobsHistoryLimit
可选。要保留的成功完成 job 的数量。默认为 3。
failedJobsHistoryLimit
可选。要保留的失败完成 job 的数量。默认为 1。
使用场景
- 定期模型训练
每天凌晨自动启动分布式模型训练任务,利用集群空闲时段进行大规模机器学习训练。
apiVersion: batch.volcano.sh/v1alpha1
kind: CronJob
metadata:
name: daily-model-training
spec:
schedule: "0 2 * * *" # 每天凌晨2点运行
concurrencyPolicy: Forbid
jobTemplate:
spec:
minAvailable: 4
schedulerName: volcano
tasks:
- replicas: 1
name: ps
template:
# 参数服务器配置
- replicas: 3
name: worker
template:
# 训练worker配置
- 定时资源清理
每周日晚上清理临时数据和日志文件,释放集群存储空间。
apiVersion: batch.volcano.sh/v1alpha1
kind: CronJob
metadata:
name: weekly-cleanup
spec:
schedule: "0 22 * * 0" # 每周日22点运行
timeZone: "Asia/Shanghai"
jobTemplate:
spec:
minAvailable: 1
schedulerName: volcano
tasks:
- replicas: 1
name: cleanup
template:
# 清理任务容器配置