k8s中的定时执行任务,实际就是基于job实现的
使用实例:
mycronjob-busybox.yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: mycronjob-busybox
spec:
  schedule: "*/1 * * * *"
  startingDeadlineSeconds: 60
  concurrencyPolicy: Replace
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
            - name: mycronjob-busybox-container
              image: busybox
              imagePullPolicy: IfNotPresent
              command: ['sh', '-c']
              args: ['echo "start cronjob";sleep 30; echo "cronjob end"']

主要配置:
① batch/v1beta1 是当前 CronJob 的 apiVersion。

② 指明当前资源的类型为 CronJob。

③ schedule 指定什么时候运行 Job,其格式与 Linux cron 一致。这里 */1 * * * * 的含义是每一分钟启动一次。

④ jobTemplate 定义 Job 的模板,格式与前面 Job 一致。

  1. 创建
[root@master manifests]# kubectl  apply -f mycronjob-busybox.yaml
  1. 查看cronjob
[root@master manifests]# kubectl  get cronjob
NAME                SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
mycronjob-busybox   */1 * * * *   False     0        <none>          15s
  1. 查看job
[root@master ~]# kubectl  get job
NAME                           COMPLETIONS   DURATION   AGE
mycronjob-busybox-1613910780   1/1           31s        3m17s
mycronjob-busybox-1613910960   0/1           13s        13s
  1. 查看pods
[root@master ~]# kubectl  get pods
NAME                                 READY   STATUS      RESTARTS   AGE
mycronjob-busybox-1613910780-7jfcj   0/1     Completed   0          4m49s
mycronjob-busybox-1613910960-x78bv   0/1     Completed   0          105s
mycronjob-busybox-1613911020-xsmd2   0/1     Completed   0          45s
  1. 查看日志
[root@master ~]# kubectl  logs -f  mycronjob-busybox-1613910780-7jfcj
start cronjob
cronjob end
  1. 删除cronjob
[root@master ~]# kubectl  delete  cronjob mycronjob-busybox
cronjob.batch "mycronjob-busybox" deleted
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐