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. If clusters and nodes are available, you need not create them again.

Creating from Image

  1. Log in to the CCE console.
  2. Click the cluster name to access its details page, choose Workloads on the left, and click the Create from Image tab in the upper right corner.
  3. Set basic information about the workload.

    Basic Info
    • Workload Type: Select Job. For details about workload types, see Overview.
    • Workload Name: Enter the name of the workload.
    • 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.
    • 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 Secure Containers and Common Containers.
    • Time Zone Synchronization: Specify whether to enable time zone synchronization. After time zone synchronization is enabled, the container and node use the same time zone. The time zone synchronization function depends on the local disk mounted to the container. Do not modify or delete the time zone. For details, see Configuring Time Zone Synchronization.
    Container Settings

    Service Settings

    A Service is used for pod access. With a fixed IP address, a Service forwards access traffic to pods and performs load balancing for these pods.

    You can also create a Service after creating a workload. For details about the Service, see Overview.

    Advanced Settings

  4. 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.

Table 1 Job 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

  • 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.

  1. Start the job.

    [root@k8s-master k8s]# kubectl apply -f myjob.yaml
    job.batch/myjob created

  2. 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.

  3. 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.

  4. 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.

Table 2 Other operations

Operation

Description

Viewing a YAML

Click View YAML next to the job name to view the YAML file corresponding to the current job.

Deleting a job

  1. Select the job to be deleted and click Delete in the Operation column.
  2. Click Yes.

    Deleted jobs cannot be restored. Exercise caution when deleting a job.