K8S CronJobs创建
fabric8代码创建apiVersion: batch/v1kind: CronJobmetadata:name: hellospec:schedule: "* * * * *"jobTemplate:spec:template:spec:containers:- name: helloimage: busyboximagePullPolicy
·
fabric8代码创建
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
//labels
Map<String, String> labels = new LinkedHashMap<>();
labels.put(SPIDER_GROUP_ID, spiderGroupId);
labels.put(APP_NAME, "cronjob-spider-worker");
//TODO 参考buildContainer,构建Deployment的容器参数
Container container = buildContainer(new SpiderGroupPO());
CronJob cronJob = new CronJobBuilder()
.withApiVersion("batch/v1beta1")
.withNewMetadata()
.withName(spiderGroupId)
.withLabels(labels)
.endMetadata()
.withNewSpec()
.withSchedule(cron)
//如果设置为 true ,后续发生的执行都会挂起。 这个设置对已经开始的执行不起作用。默认是关闭的。
//在调度时间内挂起的执行都会被统计为错过的任务。从 true 改为 false 时, 且没有开始的最后期限,错过的任务会被立即调度。
.withSuspend(false)
//CronJob 创建的任务执行时发生重叠,Allow允许、Forbid禁止、Replace替换
.withConcurrencyPolicy("Allow")
//Job 控制器允许在实际调度之后最多 10 秒内创建 Job, 不配置此参数会被统计为失败任务
.withStartingDeadlineSeconds(5L)
.withFailedJobsHistoryLimit(3)
.withSuccessfulJobsHistoryLimit(10)
.withNewJobTemplate()
.withNewSpec()
.withNewTemplate()
.withNewSpec()
.withContainers(container)
//重启策略Never 或 OnFailure
.withRestartPolicy("Never")
.endSpec()
.endTemplate()
.endSpec()
.endJobTemplate()
.endSpec()
.build();
cronJob = k8sClient.batch().cronjobs().inNamespace(namespace).createOrReplace(cronJob);
log.info("创建或更新CronJob成功, {}", cronJob.toString());
文档
https://kubernetes.io/zh/docs/concepts/workloads/controllers/cron-jobs/
参数
schedule
startingDeadlineSeconds
Job 控制器允许在实际调度之后最多 startingDeadlineSeconds 秒内创建 Job, 不配置此参数会被统计为失败任务
concurrencyPolicy
CronJob 创建的任务执行时发生重叠,Allow允许、Forbid禁止、Replace替换
更多推荐
已为社区贡献2条内容
所有评论(0)