189 8069 5689

kubernetes实践之五十八:CronJob

一: 简介
CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。
1.在给定时间点只运行一次
2.周期性地在给定时间点运行

二:CronJob定义
1.spec.schedule指定任务运行周期,格式同Cron
2.spec.jobTemplate指定需要运行的任务,格式同Job
3.spec.startingDeadlineSeconds指定任务开始的截止期限
4.spec.concurrencyPolicy指定任务的并发策略,支持Allow、Forbid和Replace三个选项

三:示例

点击(此处)折叠或打开

创新互联自2013年创立以来,先为东区等服务建站,东区等地企业,进行企业商务咨询服务。为东区企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

  1. apiVersion: batch/v1beta1
  2. kind: CronJob
  3. metadata:
  4.   name: hello
  5. spec:
  6.   schedule: "*/1 * * * *"
  7.   jobTemplate:
  8.     spec:
  9.       template:
  10.         spec:
  11.           containers:
  12.           - name: hello
  13.             image: busybox
  14.             args:
  15.             - /bin/sh
  16.             - -c
  17.             - date; echo Hello from the Kubernetes cluster
  18.           restartPolicy: OnFailure
1. kubectl create -f croJob.yaml
2.kubectl get cronjob hello
3.kubectl get jobs --watch  监控job执行情况

四:其它
1.Cron Job在每次调度运行时间内大概会创建一个Job对象。我们之所以说大概是因为在特定的环境下可能会创建两个 Job,或者一个 Job 都没创建。我们尝试少发生这种情况,但却不能完全避免。因此,创建 Job 操作应该是 幂等的。
Job 根据它所创建的 Pod 的并行度,负责重试创建 Pod,并就决定这一组 Pod 的成功或失败。Cron Job 根本就不会去检查 Pod。

2.一旦不再需要 Cron Job,简单地可以使用 kubectl 命令删除它:kubectl delete cronjob hello。 这将会终止正在创建的 Job。然而,运行中的 Job 将不会被终止,不会删除 Job 或 它们的 Pod。为了清理那些 Job 和 Pod,需要列出该 Cron Job 创建的全部 Job,然后删除它们。

3.一旦 Job 被删除,由 Job 创建的 Pod 也会被删除。注意,所有由名称为 “hello” 的 Cron Job 创建的 Job 会以前缀字符串 “hello-” 进行命名。如果想要删除当前 Namespace 中的所有 Job,可以通过命令 kubectl delete jobs --all 立刻删除它们。
文章标题:kubernetes实践之五十八:CronJob
转载注明:http://cdxtjz.cn/article/joiooe.html

其他资讯