# K8s 计划任务 Job、Cronjob

# 1. Job 配置参数详解

# cat job.yaml 
apiVersion: batch/v1
kind: Job
metadata:
  labels:
    job-name: echo
  name: echo
  namespace: default
spec:
  #suspend: true # 1.21+
  #ttlSecondsAfterFinished: 100
  backoffLimit: 4
  completions: 1
  parallelism: 1
  template:
    spec:
      containers:
      - name: echo
        image: busybox
        imagePullPolicy: IfNotPresent
        command:
        - sh
        - -c
        - echo "Hello Job"
      restartPolicy: Never
      
[root@k8s-master01 ~]# kubectl get jobs
NAME   STATUS     COMPLETIONS   DURATION   AGE
echo   Complete   1/1           70s        2m5s

[root@k8s-master01 ~]# kubectl get pods
NAME          READY   STATUS      RESTARTS      AGE
echo-564c8    0/1     Completed   0             2m10s

[root@k8s-master01 ~]# kubectl logs echo-564c8
Hello Job
  • backoffLimit::如果任务执行失败,失败多少次后不再执行
  • completions:有多少个 Pod 执行成功,认为任务是成功的,默认为空和 parallelism 数值一样
  • parallelism:并行执行任务的数量,如果 parallelism 数值大于 completions 数值,只会创建 completions 的数量;如果 completions 是 4,并发是 3,第一次会创建 3 个 Pod 执行任务,第二次只会创建一个 Pod 执行任务
  • ttlSecondsAfterFinished:Job 在执行结束之后(状态为 completed 或 Failed)自动清理。设置为 0 表示执行结束立即删除,不设置则不会清除,需要开启 TTLAfterFinished 特性

# 2. CronJob 配置参数详解

# cat cronjob.yaml 
apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  concurrencyPolicy: Allow   #允许同时运行多个任务
  failedJobsHistoryLimit: 10  #保留多少失败的任务
  successfulJobsHistoryLimit: 10  #保留多少已完成的任务
  #suspend: true             #如果true则取消周期性执行任务
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command:
            - sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure 
          
[root@k8s-master01 ~]# kubectl get  cj
NAME    SCHEDULE      TIMEZONE   SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   <none>     False     0        6s              81s

[root@k8s-master01 ~]# kubectl get  jobs
NAME             STATUS     COMPLETIONS   DURATION   AGE
hello-29084454   Complete   1/1           4s         72s
hello-29084455   Complete   1/1           5s         12s

[root@k8s-master01 ~]# kubectl get  pods
NAME                   READY   STATUS      RESTARTS   AGE
hello-29084454-hwv7p   0/1     Completed   0          78s
hello-29084455-vf99w   0/1     Completed   0          18s

[root@k8s-master01 ~]# kubectl logs -f hello-29084455-vf99w
Sat Apr 19 12:55:02 UTC 2025
Hello from the Kubernetes cluster
  • apiVersion: batch/v1beta1 #1.21+ batch/v1
  • schedule:调度周期,和 Linux 一致,分别是分时日月周。
  • restartPolicy:重启策略,和 Pod 一致。
  • concurrencyPolicy:并发调度策略。可选参数如下:
    • Allow:允许同时运行多个任务。
    • Forbid:不允许并发运行,如果之前的任务尚未完成,新的任务不会被创建。
    • Replace:如果之前的任务尚未完成,新的任务会替换的之前的任务。
  • suspend:如果设置为 true,则暂停后续的任务,默认为 false。
  • successfulJobsHistoryLimit:保留多少已完成的任务,按需配置。
  • failedJobsHistoryLimit:保留多少失败的任务。

本文出自于:https://edu.51cto.com/course/23845.html

此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Xu Yong 微信支付

微信支付

Xu Yong 支付宝

支付宝