K8s高级调度--CronJob与污点容忍及亲和力

CronJob

在 Kubernetes 中,CronJob 是用于周期性调度任务的资源,类似于 Linux 系统中的 cron。CronJob 通过定义一个特定的时间表自动创建和运行 Job,通常用于执行周期性的批处理任务,例如定期备份数据、发送报告或清理过期数据等。

CronJob 的核心概念

Job

CronJob 的核心是 Job,Job 是 Kubernetes 中的一种资源,用于在集群中运行一个或多个 Pod,并确保 Pod 成功完成。如果 Pod 失败,Job 会重新启动直到成功,或者达到失败重试的限制。

调度时间表

CronJob 使用 Cron 表达式来定义任务何时执行。Cron 表达式的格式为 minute hour day-of-month month day-of-week,

Cron表达式
  minute:       表示任务在每小时的第几分钟执行,范围 0-59。
  hour:         表示任务在一天中的第几小时执行,范围 0-23。
  day-of-month: 表示任务在一个月中的哪一天执行,范围 1-31。
  month:        表示任务在一年中的哪一个月执行,范围 1-12。
  day-of-week:  表示任务在一周中的哪一天执行,范围 0-6(0 表示星期日)。

并发策略

并发策略:
  Allow: 默认值,允许多个 CronJob 实例并行运行。
  Forbid: 禁止并发运行,如果前一个任务尚未完成,新的任务不会启动。
  Replace: 如果新的任务到达时旧任务还在运行,会终止旧任务并启动新任务。

启动历史保留

启动历史保留:
  successfulJobsHistoryLimit: 保留的成功任务的历史记录数,默认为 3。
  failedJobsHistoryLimit: 保留的失败任务的历史记录数,默认为 1

CronJob YAML 配置示例

以下是一个基本的 CronJob 配置示例,该 CronJob 每分钟运行一次,打印当前时间并显示 “Hello from the Kubernetes cluster!” 消息。

apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello-cronjob
spec:
  schedule: "*/1 * * * *"  # 每分钟运行一次
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster!
          restartPolicy: OnFailure
  successfulJobsHistoryLimit: 3  # 成功任务历史保留 3 条
  failedJobsHistoryLimit: 1      # 失败任务历史保留 1 条

解释:
  schedule:*/1 * * * * 
    表示每分钟执行一次该 CronJob。Cron 表达式中每个字段的含义是:每 1 分钟执行一次。
  
  jobTemplate:
    定义了创建的 Job 模板。
  
  containers:
    定义了容器的配置,这里使用 busybox 镜像来执行任务。
  
  args:
    定义容器启动时运行的命令,即打印当前时间并显示一条消息。
  
  restartPolicy:
    指定 Pod 的重启策略为 OnFailure,即仅当任务失败时重新启动容器。
  
  successfulJobsHistoryLimit 和 failedJobsHistoryLimit:
    限制保留的成功和失败任务历史记录的数量。

Cron 表达式

* * * * *
| | | | |
| | | | +----- 一周中的星期几 (0 - 6) (0 代表星期天)
| | | +------- 一年中的月份 (1 - 12)
| | +--------- 一个月中的天 (1 - 31)
| +----------- 一天中的小时 (0 - 23)
+------------- 每小时的分钟 (0 - 59)


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值