Jobs are short-lived and run for a certain time to completion. They can be executed immediately after being deployed. It is completed after it exits normally (exit 0).
A job is a resource object that is used to control batch tasks. It is different from a long-term servo workload (such as Deployment and StatefulSet).
A job is started and terminated at specific times, while a long-term servo workload runs unceasingly unless being terminated. The pods managed by a job automatically exit after successfully completing the job based on user configurations. The success flag varies according to the spec.completions policy.
Resources have been created. For details, see Creating a Node. If clusters and nodes are available, you need not create them again.
If the workload contains more than one pod, EVS volumes cannot be mounted.
A job has the following configuration parameters:
Based on the .spec.completions and .spec.Parallelism settings, jobs are classified into the following types.
Job Type |
Description |
Example |
---|---|---|
One-off jobs |
A single pod runs once until successful termination. |
Database migration |
Jobs with a fixed completion count |
One pod runs until reaching the specified completions count. |
Work queue processing pod |
Parallel jobs with a fixed completion count |
Multiple pods run until reaching the specified completions count. |
Multiple pods for processing work queues concurrently |
Parallel jobs |
One or more pods run until successful termination. |
Multiple pods for processing work queues concurrently |
The following is an example job, which calculates π till the 2000th digit and prints the output.
apiVersion: batch/v1 kind: Job metadata: name: myjob spec: completions: 50 # 50 pods need to be run to finish a job. In this example, π is printed for 50 times. parallelism: 5 # 5 pods are run in parallel. backoffLimit: 5 # The maximum number of retry times is 5. template: spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never
Description
Run the job.
[root@k8s-master k8s]# kubectl apply -f myjob.yaml job.batch/myjob created
kubectl get job
[root@k8s-master k8s]# kubectl get job NAME COMPLETIONS DURATION AGE myjob 50/50 23s 3m45s
If the value of COMPLETIONS is 50/50, the job is successfully executed.
kubectl get pod
[root@k8s-master k8s]# kubectl get pod NAME READY STATUS RESTARTS AGE myjob-29qlw 0/1 Completed 0 4m5s ...
If the status is Completed, the job is complete.
kubectl logs
# kubectl logs myjob-29qlw 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901
After a one-off job is created, you can perform operations listed in Table 2.
Operation |
Description |
---|---|
Editing a YAML file |
Click More > Edit YAML next to the job name to edit the YAML file corresponding to the current job. |
Deleting a job |
|