Job资源对象定义
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
activeDeadlineSeconds: 100 # 最长运行时间,一旦运行超过了 100 s,这个 Job 的所有 Pod 都会被终止
parallelism: 2 # 在任意时间最多可以启动多少个 Pod 同时运行
completions: 4 # 至少要完成的 Pod 数目,即 Job 的最小完成数
template:
spec:
containers:
- name: pi
image: resouer/ubuntu-bc
command: ["sh", "-c", "echo 'scale=10000; 4*a(1)' | bc -l "]
restartPolicy: Never # 只能设置为Never或者OnFailure
backoffLimit: 4 # 重试次数,默认为6
CronJob资源对象定义
CronJob 是一个 Job 对象的控制器(Controller)
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
由于定时任务的特殊性,很可能某个 Job 还没有执行完,另外一个新 Job 就产生了。这时候,可以通过 spec.concurrencyPolicy 字段来定义具体的处理策略。比如:
1. concurrencyPolicy=Allow,这也是默认情况,这意味着这些 Job 可以同时存在
2. concurrencyPolicy=Forbid,这意味着不会创建新的 Pod,该创建周期被跳过
3. concurrencyPolicy=Replace,这意味着新产生的 Job 会替换旧的、没有执行完的 Job。
而如果某一次 Job 创建失败,这次创建就会被标记为”miss”。当在指定的时间窗口内,miss 的数目达到 100 时,那么 CronJob 会停止再创建这个 Job。
这个时间窗口,可以由 spec.startingDeadlineSeconds 字段指定。比如 startingDeadlineSeconds=200,意味着在过去 200 s 里,如果 miss 的数目达到了 100 次,那么这个 Job 就不会被创建执行了。
作者:于浩 创建时间:2024-05-20 15:57
最后编辑:于浩 更新时间:2024-05-20 16:57
最后编辑:于浩 更新时间:2024-05-20 16:57