9.工作负载管理-使用和管理CronJob

2024-04-17 16:23:37 浏览数 (1)

在 Kubernetes 中,CronJob 是一种控制器,基于 Cron 语法创建和管理基于时间表的 Jobs。它设计用于在固定时间运行任务,类似于类 Unix 操作系统中的 cron 实用程序。CronJob 适用于自动化重复任务、批处理处理以及 Kubernetes 集群中的定时作业。

基本概念

Cron 语法:CronJob 中使用的 Cron 语法允许您指定作业的时间表。它由五个字段组成:分钟、小时、月份中的某一天、月份和星期中的某一天。例如,表达式 */15 * * * * 表示"每隔 15 分钟一次"。

Job 模板:CronJob 具有一个 Job 模板,定义了根据时间表应该创建的 Pod。此模板类似于常规的 Pod 规范。

并发策略:CronJob 支持并发策略,用于指定在前一个作业仍在运行时如何处理重叠执行。选项包括 Allow(默认值)、Forbid 和 Replace。

作业历史:CronJob 可以保留指定数量的成功和失败的 Job 实例。这使您可以查看作业执行历史。

基本使用

  • 定义yaml
代码语言:javascript复制
apiVersion: batch/v1
kind: CronJob
metadata:
  name: cronjob-simple
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cronjob-simple
            image: busybox:1.28
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the cron job
          restartPolicy: Never
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 2

schedule :定义cron表达式

代码语言:javascript复制
# ┌───────────── 分钟 (0 - 59)
# │ ┌───────────── 小时 (0 - 23)
# │ │ ┌───────────── 月的某天 (1 - 31)
# │ │ │ ┌───────────── 月份 (1 - 12)
# │ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周六)
# │ │ │ │ │                          或者是 sun,mon,tue,web,thu,fri,sat
# │ │ │ │ │
# │ │ │ │ │
# * * * * *

successfulJobsHistoryLimit:保留成功运行的历史PodfailedJobsHistoryLimit:保留失败运行的历史Pod

  • 观察运行结果

通过时间来看确实每隔一分钟启动一个,也只保留了最近三次成功的job 通过以下命令也能看到pod中打印的内容

代码语言:javascript复制
kubectl logs cronjob-simple-28491822-4bdn8

0 人点赞