CronJob & Job

20250407

Job

与Deployment及DaemonSet控制器管理的守护进程类的服务应用不同的是,Job控制器用于调配Pod对象运行一次性任务,容器中的进程在正常运行结束后不会对其进行重启,而是将Pod对象置于“Completed”(完成)状态。若容器中的进程因错误而终止,则需要依配置确定重启与否,未运行完成的Pod对象因其所在的节点故障而意外终止后会被重新调度。Job控制器的Pod对象的状态转换如图所示。
在这里插入图片描述
Job控制器

CronJob

CronJob控制器用于管理Job控制器资源的运行时间。Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux操作系统的周期性任务作业计划(crontab)的方式控制其运行的时间点及重复运行的方式,具体如下。
□在未来某时间点运行作业一次。
□在指定的时间点重复运行作业。
CronJob对象支持使用的时间格式类似于Crontab,略有不同的是,CronJob控制器在指定的时间点时,“?”和“*”的意义相同,都表示任何可用的有效值。

CronJob控制器

successfulJobsHistoryLimit: 3: 这是一项配置,用于设置成功完成的作业历史记录的保存限制。在这种情况下,只会保留最近的3个成功作业的记录。
suspend: false: 这是一项配置,用于指定是否挂起某个资源或对象。在这种情况下,它设置为false,表示该资源不会被挂起。

实践

查看CronJob资源对象

kq get cronjobs

SCHEDULE是指其调度时间点

在这里插入图片描述

SUSPEND表示后续任务是否处于挂起状态,即暂停任务的调度和运行
ACTIVE表示活动状态的Job对象的数量
LAST SCHEDULE则表示上次调度运行至此刻的时长

查看某CronJob控制器创建的Job资源对象
kq get jobs

CronJobJobPod 是三个不同层次的资源

在 Kubernetes 中,CronJobJobPod 是三个不同层次的资源,它们之间有明确的层次关系和职责分工。以下是它们的详细解释:

1. Pod

  • 定义:Pod 是 Kubernetes 中的最小部署单元,它封装了一个或多个容器(通常是紧密相关的容器)。
  • 职责:Pod 是实际运行应用程序的单位,负责执行具体的任务或服务。
  • 生命周期:Pod 是短暂的,一旦被创建,它会运行直到完成或失败,或者被手动删除。
  • 示例:一个 Pod 可以运行一个数据库容器,或者一个 Web 服务容器。

2. Job

  • 定义:Job 是 Kubernetes 中用于运行一次性任务的资源。
  • 职责:Job 负责创建一个或多个 Pod,并确保这些 Pod 成功完成任务。如果任务失败,Job 会根据配置进行重试,直到任务成功或达到最大重试次数。
  • 生命周期:Job 是短期的,一旦任务完成(成功或失败),Job 会终止。
  • 示例:运行一个批处理任务,比如数据备份或日志清理。

3. CronJob

  • 定义:CronJob 是 Kubernetes 中用于定时运行任务的资源。
  • 职责:CronJob 是基于时间的调度器,它会按照预定的时间表(类似于 Linux 的 cron)创建 Job。
  • 生命周期:CronJob 是长期运行的资源,它会根据时间表定期创建 Job。
  • 示例:每天凌晨 2 点运行一个数据备份任务。

层次关系

  1. CronJobJobPod
    • CronJob 根据时间表创建 Job
    • Job 创建 Pod 来执行具体任务。
    • Pod 是实际运行任务的单元。

示例

以下是一个简单的 CronJob 示例,用于每天运行一个备份任务:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: backup-cronjob
spec:
  schedule: "0 2 * * *"  # 每天凌晨 2 点运行
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup-container
            image: backup-image:latest
            command: ["/bin/sh", "-c", "run-backup-script.sh"]
          restartPolicy: OnFailure
  • CronJobbackup-cronjob 每天凌晨 2 点触发。
  • Job:CronJob 会创建一个 Job 来执行备份任务。
  • Pod:Job 会创建一个 Pod 来运行备份脚本。

总结

  • CronJob:定时调度器。
  • Job:一次性任务管理器。
  • Pod:实际运行任务的单元。

如果你有其他问题或需要进一步解释,请告诉我!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值