CronJob管理

最近更新时间:2020-10-21 15:38:57

CronJob概述

在Job仅执行一次任务的基础上,CronJob增加了时间调度,适合应用于在给定的时间点执行一个任务,或者周期性的在某时间点进行一个任务。

本模块提供了基于Kubernetes原生的CronJob的创建、配置、删除等生命周期的管理指南。

创建CronJob

您可以在容器服务控制台通过镜像和参数配置创建一个CronJob。

a) 设置基本信息

b) 部署配置

设置基本信息

CronJob管理

  • 名称:用户自定义CronJob的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾
  • 部署集群:选择Job运行的集群
  • 命名空间:选择Job所在集群的命名空间
  • 描述:创建Job的相关信息,用户自定义填写

部署配置

CronJob管理

并发策略

在多个Job按照定时规则执行时,若新任务开始时旧任务还未完成,支持从以下三种模式中选择新旧任务的并发策略:

  • Forbid: 旧任务未完成时禁止创建新任务
  • Allow: 允许新旧任务并发运行
  • Replace: 旧任务未完成时新任务替代正在运行的旧任务 默认并发策略为“Allow”

定时策略

指定新建定时任务在何时执行。 根据5位Cron表达式输入定时策略,5位分别代表“分 时 日 月 周”,如“ /1 *”表示每小时执行一次。

# 5位cron表达式格式说明
#  ——分(0 - 59)
# |  ——时(0 - 23)
# | |  ——日(1 - 31)
# | | |  ——月(1 - 12)
# | | | |  ——周 (0 - 7) (Sunday=0 or 7) 
# | | | | |
# * * * * *

Job设置

根据实际需求,您可以设置Cronjob中每次执行Job的关键参数:

  • 重复次数:设置Job结束所需pod成功运行的次数,默认为1
  • 并行度:设置Job下pod并行执行的数量,默认为1
  • 失败重启策略:设置pod的容器异常退出时是否重启
    • Never:失败容器不会重启,直至所有容器全部退出,新的pod会被启动
    • OnFailure:失败容器将会重新启动,pod继续运行

存储卷

目前支持使用主机路径、本地路径、金山云云硬盘、文件存储、已有PVC等存储类型。 CronJob管理

  • 类型:包含主机路径、本地路径、金山云云硬盘、文件存储、已有PVC、使用ConfigMap/Secret
  • 存储卷名称:存储卷的名称
  • 资源名称:选择相应存储资源的名称
  • 其他信息:指定容器要挂载的路径

备注:

使用本地硬盘时,若不指定源路径,则默认分配临时路径(对应k8s存储中EmpytDir)

当使用云硬盘作为存储卷时,存储卷的名称为云硬盘的id,不可修改

容器配置

设置运行的容器信息 CronJob管理

  • 名称:容器的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾
  • 镜像:点击【选择镜像】,从镜像仓库中选择;或输入镜像仓库地址
  • 镜像版本:镜像的tag
  • 资源限制:设定容器所使用的CPU和内存资源的限制
  • 环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数,目前仅支持手动添加
  • 实例数量:一个实例由相关的一个或多个容器构成,用户自定义实例数量

镜像访问凭证

目前支持从私有镜像仓库拉取镜像时,为容器配置镜像访问凭证(对应yaml中的imagePullSecret)。 CronJob管理

  • 初始状态下提供默认选项ksyunregistrykey,可以匹配金山云镜像仓库中的私有镜像
  • 若您使用的镜像来自第三方私有镜像仓库,可以通过【添加镜像访问凭证】-【使用新的访问凭证】-【设置访问凭证信息】,设置新的访问凭证的名称,以及第三方仓库的域名、用户名、密码,即完成添加第三方私有镜像仓库访问凭证 CronJob管理

配置完成后,点击【创建】,返回Job列表页面,查询Job的状态。

CronJob基本操作

运行/停止Cronjob

创建Cronjob后,若您想要运行/停止某个Cronjob,可以在Cronjob列表中对该Cronjob执行【运行】或【停止】操作。 CronJob管理

查看Cronjob状态

点击Cronjob列表中某Cronjob名称,可至Cronjob任务列表页查看Cronjob中已创建的Job的运行状态。点击任务列表中的任务名称可进入对应Job的详情页。 CronJob管理

删除

点击CronJob列表中的【删除】,执行删除CronJob的操作。 CronJob管理

若需要删除Cronjob中某单个Job,可进入该Cronjob任务列表点击【删除】,实现该Job相关资源的删除。 CronJob管理

Kubectl操作示例

在CronJob列表页面,可以通过【YAML创建资源】新建CronJob,也可以通过CronJob列表中的【编辑YAML】更新已有CronJob的配置。

方法一: 以下提供一个YAML示例,创建一个每分钟输出问候语的定时任务。 hello-cronjob.yaml如下:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
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
  • spec.schedule: 定时策略
  • spec.jobTemplate: 定义Cronjob执行的Job对象的模板

创建该job

# kubectl apply -f hello-cronjob.yaml

方法二: 通过Kubectl run快速创建一个不需完整配置信息的Cronjob,命令如下:

kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello"

查看CronJob的状态

kubectl get cronjob

金山云,开启您的云计算之旅

免费注册