Job单次任务和定时任务

之前我们部署的程序如Nginx、我们自己写的SpringBoot程序等都是持续运行的服务,除此之外k8s也支持单次任务(Job)和定时任务(CronJob)。

Job单次任务

Job也会创建一个Pod,通过该Pod的返回码来判断其是否执行成功,如果发生异常退出会将其重新启动。

Job例子

下面是一个Job的例子。

apiVersion: batch/v1
kind: Job
metadata:
  name: myjob
spec:
  template:
    metadata:
      labels:
        app: myjob
    spec:
      restartPolicy: OnFailure
      containers:
      - name: busybox
        image: busybox
        args:
        - /bin/sh
        - -c
        - echo helloWorld

这里我们使用busybox镜象输出一段信息作为我们的Job。

注意:Job属于batch API组,因此这里apiVersionbatch/v1

Job相关操作

部署Job,我们直接使用kubectl create命令。

kubectl create -f <yaml配置文件名>

如下命令可以查看Job运行状态。

kubectl get job

其中,STATUSComplated为执行成功。

CronJob定时任务

CronJob通过指定一个Linux的Crontab表达式,来定时执行任务,下面是一个例子。

apiVersion: batch/v1
kind: CronJob
metadata:
  name: myjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: busybox
            image: busybox
            args:
            - /bin/sh
            - -c
            - echo helloWorld

CronJob每一次运行,就会创建一个新的Pod,并执行我们指定的内容。

我们可以用如下命令查看定时任务的执行情况。

kubectl get cronjob

如果不希望CronJob继续运行,可以将其删除。

kubectl delete cronjob <CronJob名>
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。