千家信息网

kubernetes实践之五十八:CronJob

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,一: 简介CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。1.在给定时间点只运行一次2.周期性地在给定时间点运行二:CronJob定义1.spec.s
千家信息网最后更新 2024年11月26日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三个选项

三:示例

点击(此处)折叠或打开

  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 立刻删除它们。
0