Reviewed-by: Eotvos, Oliver <oliver.eotvos@t-systems.com> Co-authored-by: proposalbot <proposalbot@otc-service.com> Co-committed-by: proposalbot <proposalbot@otc-service.com>
13 KiB
- original_name
cce_10_0150.html
Creating a Job
Scenario
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.
- One-off jobs: A single pod runs once until successful termination.
- Jobs with a fixed success count: N pods run until successful termination.
- A queue job is considered completed based on the global success confirmed by the application.
Prerequisites
Resources have been created. For details, see Creating a Node <cce_10_0363>
. If clusters and nodes are available, you need not create them again.
Using the CCE Console
Log in to the CCE console.
Click the cluster name to go to the cluster console, choose Workloads in the navigation pane, and click the Create Workload in the upper right corner.
Set basic information about the workload.
Basic Info
- Workload Type: Select Job. For details about workload types, see
Overview <cce_10_0006>
. - Workload Name: Enter the name of the workload. Enter 1 to 63 characters starting with a lowercase letter and ending with a letter or digit. Only lowercase letters, digits, and hyphens (-) are allowed.
- Namespace: Select the namespace of the workload. The default value is default. You can also click Create Namespace to create one. For details, see
Creating a Namespace <cce_10_0278>
. - Pods: Enter the number of pods.
- Container Runtime: A CCE cluster uses runC by default, whereas a CCE Turbo cluster supports both runC and Kata. For details about the differences between runC and Kata, see
Kata Containers and Common Containers <cce_10_0463>
.
Container Settings
Container Information
Multiple containers can be configured in a pod. You can click Add Container on the right to configure multiple containers for the pod.
Basic Info: See
Setting Basic Container Information <cce_10_0396>
.Lifecycle: See
Setting Container Lifecycle Parameters <cce_10_0105>
.Environment Variables: See
Setting an Environment Variable <cce_10_0113>
.Data Storage: See
Overview <cce_10_0307>
.Note
If the workload contains more than one pod, EVS volumes cannot be mounted.
Logging: See
Using ICAgent to Collect Container Logs <cce_10_0018>
.
Image Access Credential: Select the credential used for accessing the image repository. The default value is default-secret. You can use default-secret to access images in SWR. For details about default-secret, see
default-secret <cce_10_0388__section11760122012591>
.GPU graphics card: All is selected by default. The workload instance will be scheduled to the node with the specified GPU graphics card type.
Advanced Settings
- Labels and Annotations: See
Pod Labels and Annotations <cce_10_0386>
. - Job Settings:
- Parallel Pods: Maximum number of pods that can run in parallel during job execution. The value cannot be greater than the total number of pods in the job.
- Timeout (s): Once a job reaches this time, the job status becomes failed and all pods in this job will be deleted. If you leave this parameter blank, the job will never time out.
- Workload Type: Select Job. For details about workload types, see
Click Create Workload in the lower right corner.
Using kubectl
A job has the following configuration parameters:
- spec.template: has the same schema as a pod.
- RestartPolicy: can only be set to Never or OnFailure.
- For a single-pod job, the job ends after the pod runs successfully by default.
- .spec.completions: indicates the number of pods that need to run successfully to end a job. The default value is 1.
- .spec.parallelism: indicates the number of pods that run concurrently. The default value is 1.
- spec.backoffLimit: indicates the maximum number of retries performed if a pod fails. When the limit is reached, the pod will not try again.
- .spec.activeDeadlineSeconds: indicates the running time of pods. Once the time is reached, all pods of the job are terminated. The priority of .spec.activeDeadlineSeconds is higher than that of .spec.backoffLimit. That is, if a job reaches the .spec.activeDeadlineSeconds, the spec.backoffLimit is ignored.
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 Pi 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, Pi 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
- apiVersion: batch/v1 indicates the version of the current job.
- kind: Job indicates that the current resource is a job.
- restartPolicy: Never indicates the current restart policy. For jobs, this parameter can only be set to Never or OnFailure. For other controllers (for example, Deployments), you can set this parameter to Always.
Run the job.
Start the job.
[root@k8s-master k8s]# kubectl apply -f myjob.yaml job.batch/myjob created
View the job details.
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.
Query the pod status.
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.
View the pod logs.
kubectl logs
# kubectl logs myjob-29qlw 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901
Related Operations
After a one-off job is created, you can perform operations listed in Table 2 <cce_10_0150__t84075653e7544394939d13740fad0c20>
.
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 |
|