先来生成一个YAML文件模板
$ k create job job-demo --image=busybox --dry-run=client -o yaml > job-demo.yaml
修改模拟文件
$ vim job-demo.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template: ##模板,基于此模板来创建pod,它用来定义pod的属性,比如container
spec:
restartPolicy: OnFailure ##定义Pod运行失败时的策略,可以是OnFailure和Never,其中OnFailure表示失败的话需要重启容器,Never表示失败的话不重启容器,而是重新生成一个新的Pod
containers:
- image: registry.cn-hangzhou.aliyuncs.com/abroad_images/busybox:latest
name: job-demo
command: ["/bin/echo"]
args: ["hellow", "world"]
创建Job
$ k apply -f job-demo.yaml
查看Job,可以看到该容器运行完成后状态就变成了Completed。
$ k get job,pod
NAME COMPLETIONS DURATION AGE
job.batch/job-demo 1/1 12s 88s
NAME READY STATUS RESTARTS AGE
pod/job-demo-nhlsm 0/1 Completed 0 88s
对于Job,还有几个特殊字段:
- activeDeadlineSeconds,设置 Pod 运行的超时时间。
- backoffLimit,设置 Pod 的失败重试次数。
- completions,Job 完成需要运行多少个 Pod,默认是 1 个。
- parallelism,它与 completions 相关,表示允许并发运行的 Pod 数量,避免过多占用资源。
创建Job
$ vim myjob.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: sleep-job
spec:
activeDeadlineSeconds: 60 #60s就超时
backoffLimit: 2 #失败重试2次就放弃
completions: 4 #要运行4个pod,才算完成
parallelism: 2 #允许并发运行2个pod
template:
spec:
restartPolicy: Never
containers:
- image: registry.cn-hangzhou.aliyuncs.com/abroad_images/busybox:latest
name: echo-job
imagePullPolicy: IfNotPresent
command:
- sh
- -c
- sleep 10; echo done
创建job,并查看job情况,最终运行4个pod
$ k apply -f myjob.yaml ; kubectl get pod -w
NAME READY STATUS RESTARTS AGE
cluster-test-79b978867f-4x2lw 1/1 Running 33 (30m ago) 203d
pod-demo 1/1 Running 0 10h
sleep-job-vjbfl 0/1 ContainerCreating 0 0s
sleep-job-z9s8m 0/1 ContainerCreating 0 0s
sleep-job-z9s8m 0/1 ContainerCreating 0 0s
sleep-job-vjbfl 0/1 ContainerCreating 0 0s
sleep-job-z9s8m 1/1 Running 0 1s
sleep-job-vjbfl 1/1 Running 0 1s
sleep-job-z9s8m 0/1 Completed 0 11s
sleep-job-vjbfl 0/1 Completed 0 11s
sleep-job-z9s8m 0/1 Completed 0 12s
sleep-job-vjbfl 0/1 Completed 0 12s
sleep-job-z9s8m 0/1 Completed 0 13s
sleep-job-5q8bq 0/1 Pending 0 0s
sleep-job-5q8bq 0/1 Pending 0 0s
sleep-job-5q8bq 0/1 ContainerCreating 0 0s
sleep-job-vjbfl 0/1 Completed 0 13s
sleep-job-p2v6j 0/1 Pending 0 0s
sleep-job-p2v6j 0/1 Pending 0 0s
sleep-job-p2v6j 0/1 ContainerCreating 0 0s
sleep-job-5q8bq 0/1 ContainerCreating 0 0s
sleep-job-p2v6j 0/1 ContainerCreating 0 1s
sleep-job-5q8bq 1/1 Running 0 1s
sleep-job-p2v6j 1/1 Running 0 1s
sleep-job-5q8bq 0/1 Completed 0 11s
sleep-job-p2v6j 0/1 Completed 0 11s
sleep-job-5q8bq 0/1 Completed 0 12s
sleep-job-p2v6j 0/1 Completed 0 12s
sleep-job-5q8bq 0/1 Completed 0 13s
sleep-job-p2v6j 0/1 Completed 0 13s