1.5.4. jobs¶
jobs是创建一个或者多个pods的,当数量达到成功的个数阈值时候,任务就结束了, job是可以配置并行的。
1.5.4.1. job样例¶
1apiVersion: batch/v1
2kind: Job
3metadata:
4 name: pi
5spec:
6 ttlSecondsAfterFinished: 100
7 template:
8 spec:
9 containers:
10 - name: pi
11 image: perl
12 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
13 restartPolicy: Never
14 backoffLimit: 4
15 parallelism: 2
应用一下,通过如下命令查看
kubectl get job
NAME COMPLETIONS DURATION AGE
pi 0/1 of 2 4s 4s
kubectl describe job pi
Name: pi
Namespace: default
Selector: controller-uid=d4d9a0cc-92c2-4d62-b632-9f209f765d16
Labels: controller-uid=d4d9a0cc-92c2-4d62-b632-9f209f765d16
job-name=pi
Annotations: <none>
Parallelism: 2
Completions: <unset>
Completion Mode: NonIndexed
Start Time: Wed, 06 Oct 2021 11:37:21 +0800
Completed At: Wed, 06 Oct 2021 11:37:45 +0800
Duration: 24s
Pods Statuses: 0 Running / 2 Succeeded / 0 Failed
Pod Template:
Labels: controller-uid=d4d9a0cc-92c2-4d62-b632-9f209f765d16
job-name=pi
Containers:
pi:
Image: perl
Port: <none>
Host Port: <none>
Command:
perl
-Mbignum=bpi
-wle
print bpi(2000)
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 51s job-controller Created pod: pi--1-rwc87
Normal SuccessfulCreate 51s job-controller Created pod: pi--1-9r6qf
Normal Completed 27s job-controller Job completed
1.5.4.2. job的并行执行¶
非并行: 通常启用一个pod,当pod终止后,视为pod完成状态。
具有确定完成计数的job: .spec.completions设为一个非0的,当成功的pod个数达到spec.completions后就认为pod完成。spec.completionmod=indexed时候,每个pod会有一个不同的索引。
带有工作队列冰箱的job: .spec.parallelism 多个pod协同,每个pod从队列取出来部分任务,每个pod都可以确定其他的pod是否完成,job任何pod成功终止,不在创建新的pod。