创建定时任务工作负载cronjob

创建定时任务工作负载CronJob

1. 前提条件

已创建容器集群,具体操作请参见 创建集群
已构建私有镜像仓库。

2. 操作步骤

登录容器云服务控制台,若默认进入的集群非目标集群,可在顶部的导航栏出切换进入集群;
在左侧导航栏中,选择【工作负载】->【定时任务】;
单击【创建】,进入“创建定时任务”页面。根据实际需求,完成参数设置;

基本信息

  • 负载名称:设置负载资源的名称;
  • 命名空间:根据实际需求选择集群下的命名空间;
  • 实例类型:根据需要选择容器实例的机型配置;
  • CronJob标签:输入键-值对(Key-Value),为CronJob设置标签;
  • CronJob注释:输入键-值对(Key-Value),为CronJob设置注释;

容器配置

  • 镜像名称:
    • 我的镜像:若已开通容器镜像服务,则对应显示该区域镜像仓库镜像信息。根据需要进行选择;
    • 公共镜像:平台提供的公共镜像;
  • 镜像tag:选择镜像tag;
  • 选择Secret:当选择镜像为【我的镜像】私有镜像时,需要关联选择对应镜像仓库的Secret;
  • 镜像拉取策略:
    • IfNotPresent:如果本地存在该镜像,则使用本地镜像;若本地无该镜像,则从远程拉取镜像;
    • Always:每次部署总是从远程拉取镜像;
  • 所需资源:容器的GPU/CPU/内存,根据需要设置;
  • 容器启动项:
    • stdin:勾选表示为该容器开启标准输入;
    • tty:勾选表示为该容器分配一个虚拟终端;
  • 初始化容器:勾选表示创建一个init Container。

    展开页面【高级设置】设置按钮,可完成以下参数设置:

  • 端口设置:

    • 名称:设置容器端口的名称;
    • 容器端口:设置暴露的容器访问端口,端口范围1~65535;
    • 协议:支持TCP、UDP;
  • 环境变量:
    • 类型:设置环境变量的类型,支持:
      • 自定义
      • 配置项ConfigMap
      • 保密字典Secret
    • 变量名称:设置环境变量的名称;
    • 变量/变量 引用:设置变量引用的值;
  • 工作目录:设置容器的工作目录;
  • 运行命令:设置容器运行的输入命令;
  • 运行参数:传递给容器运行命令的输入参数;
  • 健康检查:
    • 存活检查:勾选后可进行设置,用来检查容器是否正常,不正常则重启容器;
    • 就绪检查:勾选后可进行设置,使用就绪检查可以判断容器合适准备好接受流量;
    • 启动检查:勾选后可进行设置,用于检测容器内应用是否启动;
  • 生命周期:勾选后可设置容器的启动前处理和停止前处理。支持二进制方式和bash方式;
  • 存储:为容器提供存储,支持本地存储和PVC;

    • 添加本地存储:支持临时目录、ConfigMap、Secret,将对应的挂载源挂载到容器路径中;

    • 添加PVC:支持通过PVC挂载云存储卷。选择挂载源前需要提前创建好PVC,具体操作请参见 使用云硬盘静态存储卷使用CFS动态存储卷

任务配置

  • 调度周期:设置任务定时执行的策略;
  • 并发策略:支持三种并发策略:
    • Allow:允许并发允许任务;
    • Forbid:禁止并发运行,如果前一个没有完成,则直接跳过下一个任务;
    • Replace:前一个任务未完成时,下一个任务会取代前一个任务;
  • 保留成功任务数:设置保留执行成功的任务个数;
  • 保留失败任务数:设置保留执行失败的任务个数;
  • 任务设置:
    • 成功运行的Pod数:指定Job需要成功运行的Pod数量,默认值为1;
    • 并行运行的Pod数:指定Job并行运行的Pod数量,默认值为1;
    • 超时时间:设置Job运行时间限制,超过时间Job未结束,系统会终止Job;
    • 重试次数:设置Pod执行失败时,重新创建Pod的次数;
    • 重启策略:设置Pod执行失败时,重启策略,支持不重启和失败时;
  • Pod标签:输入键-值对(Key-Value),为Pod设置标签;
  • Pod注释:输入键-值对(Key-Value),为Pod设置注释。

3. 使用YAML创建CronJob

登录容器云服务控制台,若默认进入的集群非目标集群,可在顶部的导航栏出切换进入集群;
在左侧导航栏中,选择【工作负载】->【定时任务】;
单击【YAML 创建】,完成参数设置:

  • 模板:支持使用定义模板或平台提供的系统模板;
  • 模板内容:选择好模板后,在“模板内容”区域可以对模板进行编辑。完成参数设置后,点“保存模板”可将改动保存到自定义模板。点“确定”完成创建。

4. 使用kubectl创建CronJob

参考系统模板,根据需要准备好创建CronJob的YAML文件;
YAML示例:

apiVersion: "batch/v1"
kind: "CronJob"
metadata:
  name: "cronjob01"
  namespace: "default"
spec:
  concurrencyPolicy: "Allow"
  failedJobsHistoryLimit: 1
  jobTemplate:
    metadata:
      annotations:
        node.yovole.com/cpu-type: "intel"
    spec:
      activeDeadlineSeconds: 600
      backoffLimit: 3
      completions: 1
      parallelism: 1
      template:
        spec:
          containers:
          - command:
            - "date"
            image: "nginx:latest"
            imagePullPolicy: "IfNotPresent"
            name: "cronjob-1"
            resources:
              requests:
                cpu: "1"
                memory: "1024m"
            terminationMessagePath: "/dev/termination-log"
            terminationMessagePolicy: "File"
          dnsPolicy: "ClusterFirst"
          restartPolicy: "Never"
          schedulerName: "default-scheduler"
          securityContext: {}
          terminationGracePeriodSeconds: 30
  schedule: "*/10 * * * ?"
  successfulJobsHistoryLimit: 3
  suspend: true

安装kubectl工具,获取访问集群的kubeconfig,具体操作请参见 使用kubectl工具连接集群操作步骤
在kubectl客户端执行命令创建CronJob:

kubectl --kubeconfig  KUBECONFIG_NAME create -f CronJob YAML 文件名称

执行以下命令,查看cronjob创建结果。

kubectl --kubeconfig  KUBECONFIG_NAME get cronjobs -A

说明:
如果模板设置的资源规格(CPU/内存/GPU)不符合系统设置,系统会自动规整为标准配置,具体参看 关于yaml指定资源规格 ,查看yaml看到的规格是提交时用户设置值,不是系统规整后的值。

个结果匹配 ""

    无结果匹配 ""