【K8s】专题四(7):Kubernetes 控制器之 CronJob

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

Linux 专栏 | Docker 专栏 | Kubernetes 专栏


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)


目录

一、基本介绍

二、工作原理

三、相关特性

四、资源清单(示例)

五、常用操作

1、创建 CronJob

2、查看 CronJob

3、删除 CronJob


一、基本介绍

CronJob 控制器是 Kubernetes 中用于周期性运行计划任务的 API 对象,它负责在指定时间执行一次性任务,相当于在 Job 之上增加了基于时间的调度配置。

CronJob 通常用于部署定时备份、定时检查、定时同步、定时报告等周期性任务。


二、工作原理
  • 定义对象:用户创建一个 CronJob 对象,指定 Pod 模板和其他配置选项
  • 监控 Job:Kubernetes 的调度器会监控 CronJob 对象的状态
  • 生成 Job:根据 CronJob 定义的时间表,调度器在预定的时间创建 Job 对象
  • 执行任务:Kubernetes 根据 Job 模板创建 Pod,并开始执行任务
  • 监控 Pod:Kubernetes 监控 Pod 的状态,确保任务成功完成
  • 记录历史:由 CronJob 创建的 Job 都会被记录,包括成功和失败的 Job
  • 清理资源:完成的 Job 及对应的 Pod 会根据 CronJob 的配置进行清理


三、相关特性
  • 定时调度:支持复杂的时间表,可以精确控制任务的执行时间
  • 并发策略:可以设置并发策略,如允许多个 Job 并发执行,或在新 Job 开始前终止旧的 Job
  • 失败重试:可以配置重试策略,当 Job 失败时,CronJob 可以重新创建 Job 来尝试完成任务
  • 历史记录:CronJob 会保留成功和失败 Job 的历史记录,便于追踪和分析
  • 暂停和恢复:可以暂停 CronJob,暂停后不会生成新的 Job,也可以恢复 CronJob 继续生成 Job
  • 时区设置:可以设置 CronJob 的时区,以适应不同地区的时区需求
  • Suspend:可以挂起 Job 的执行,直到再次被激活
  • 死信队列:对于失败的 Job,可以配置死信队列来处理这些失败的任务


四、资源清单(示例)
# cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: demo-cronjob
spec:
  schedule: 10 00 * * *
  successfulJobsHistoryLimit: 3
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: demo-container
          image: busybox
          command:
          - sh
          - -c
          - for i in 1 2 3 4 5 6;do echo $i;done

🔔 schedule:指定计划任务执行时间,格式为:分 时 日 月 周几
🔔 successfulJobsHistoryLimit:指定 Completed 状态的 Pod 保留数量

上述 cronjob.yaml 文件定义了一个名为 demo-cronjob 的 CronJob 对象,每天 00:10 新建一个 Pod,Pod 包含一个名为 demo-container 的容器,该容器使用 busybox 镜像,启动后执行一次性任务(打印数字 1 ~ 6)。

说明:可以通过以下命令查看 CronJob 资源清单支持定义的内容

kubectl explain cronjob --recursive


五、常用操作
1、创建 CronJob
kubectl create -f cronjob.yaml
或
kubectl apply -f cronjob.yaml

2、查看 CronJob
# 查看实例列表
kubetcl get cronjob
 
# 查看详细信息
kubectl describe cronjob demo-cronjob

3、删除 CronJob
# 方式一:命令行
kubectl delete cronjob demo-cronjob
 
# 方式二:资源清单
kubectl delete -f cronjob.yaml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者Sun1989

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值