Job
Job启动后,只运行一个Pod,Pod运行结束后整个Job也就立刻结束;
Example:
输出圆周率小数点后2000位,运行时间大概为10s
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template:
metadata:
name: job-demo
spec:
restartPolicy: Never
containers:
- name: counter
image: busybox
command:
- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1;do echo $i;done"
CronJob
周期性完成Job,定点时间调度Job运行
策略:
- Allow(默认):允许并发运行Job;
- Forbid:禁止并发运行,如果前一个Job没有完成则直接跳过执行下一个;
- Replace:取消当前正在运行的Job,用一个新的来替换。
Example:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "*/30 * * * *" #这里需要添加一个时间调度的周期,和crontab调度是一样的,这也是主要和job任务的区别,同时这里也不需要添加执行的命令
jobTemplate: #cronjob实际上下面就是用的job配置,这里可以直接将上面job的配置复制过来即可
spec:
template:
metadata:
name: cronjob-demo #pod名称
spec:
restartPolicy: Never
containers:
- name: counter
image: busybox
command:
- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1 ;do echo $i;done"
Example:
apiVersion: batch/v1beta1 #版本
kind: CronJob
metadata:
name: xxxxxx #名称
namespace: xxxx #项目分组
spec:
concurrencyPolicy: Replace #重点 并发策略
failedJobsHistoryLimit: 1 #重点 失败任务历史显示个数
jobTemplate:
metadata: {}
spec:
activeDeadlineSeconds: 600
backoffLimit: 6
completions: 1
parallelism: 1
template:
metadata: {}
spec:
containers:
- command:
- curl
- '-i'
- >-
www.baidu.com
env:
- name: MYPATH
value: /usr/local
image: >-
registry-vpc.cn-shanghai.aliyuncs.com/jinlincentos/mycentos:1.4.1
imagePullPolicy: IfNotPresent
name: xxxxx #应用名称
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
cpu: 250m
memory: 512Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Never #重启策略
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
schedule: '*/1 * * * *' #表达式 每分钟执行一次
startingDeadlineSeconds: 60 #重点 job存活时间 默认不设置为永久
successfulJobsHistoryLimit: 1 #重点 成功job历史显示个数
suspend: true #true 挂起 不运行 false 及运行