跳到主要内容
版本:v1.7.0

Cron VolcanoJob

定义

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

查看已创建的作业实例

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:
# 清理任务容器配置