
# 任务和定时任务
#### 任务概述
任务管理对应Kubernetes中的Job，分为普通任务和定时任务。
普通任务（Job）是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务（Deployment、StatefulSet）的主要区别是批处理业务的运行有头有尾，而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出了。成功完成的标志根据不同的spec.completions策略而不同：单Pod型任务有一个Pod成功就标志成功。定数成功型任务保证有N个任务全部成功标志成功。工作队列型任务根据应用确认的全局成功而标志成功。
定时任务（CronJob）即定时任务，是基于时间的Job，类似于Linux系统的crontab，在指定的时间周期运行指定的Job，即：
- 在给定时间点只运行一次。
- 在给定时间点周期性地运行。
CronJob的典型用法如下所示：
- 在给定的时间点调度Job运行。
- 创建周期性运行的Job，例如数据库备份、发送邮件。
 
#### 创建普通任务
普通任务可用于创建仅执行一次的批处理任务，任务执行完成后会自动退出。使用场景为在创建工作负载前，执行普通任务，将镜像上传至镜像仓库。
1. （可选）普通任务需要基于镜像创建，若选择私有镜像，用户首先需要将镜像上传至镜像仓库。
2. 登录[UCS控制台](https://console.huaweicloud.com/ucs/?#/aether/dashboard)，进入集群页面，在左侧导航栏中选择"工作负载"，选择"普通任务"页签，并单击右上角"镜像创建"*。*
3. 配置工作负载的信息。 
   **基本信息**
   - 负载类型：选择普通任务Job。
   
   - 负载名称：填写工作负载的名称。
   
   - 命名空间：选择工作负载的命名空间，默认为default。您可以单击后面的"创建命名空间"，命名空间的详细介绍请参见[创建命名空间](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0117.html#ucs_01_0117__zh-cn_topic_0167389656_section31143617514)。
   
   - 实例数量：填写实例的数量，也就是Pod的数量。
    
   **容器配置**
   - 容器信息：Pod中可以配置多个容器，您可以单击右侧"添加容器"为Pod配置多个容器。
     - 基本信息：请参见[表1]。
        表1基本信息参数说明 
       | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
       |:---|:---|
       | 容器名称  | 为容器命名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
       | 镜像名称  | 单击后方"选择镜像"，选择容器使用的镜像。 - 我的镜像：当前区域下镜像仓库中的镜像。若无可用的镜像，可单击"上传镜像"进行上传。  - 镜像中心：开源镜像仓库中的官方镜像。  - 共享镜像：由他人账号共享的私有镜像，详情请参见[共享私有镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0026.html)。   |
       | 镜像版本  | 选择需要部署的镜像版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
       | 更新策略  | 镜像更新/拉取策略。勾选"总是拉取镜像"表示每次都从镜像仓库拉取镜像；如不勾选则优先使用节点已有的镜像，如果没有这个镜像再从镜像仓库拉取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
       | CPU配额 | - 申请：容器需要使用的最小CPU值，默认0.25Core。  - 限制：允许容器使用的CPU最大值。建议设容器配额的最高限额，避免容器资源超额导致系统故障。                                                                                                                                                                                                                                                                                                                                                                     |
       | 内存配额  | - 申请：容器需要使用的内存最小值，默认512MiB。  - 限制：允许容器使用的内存最大值。如果超过，容器会被终止。   关于CPU/内存配额申请和限制的具体说明请参见[设置容器规格](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0147.html)。                                                                                                                                                                                                                                                                                    |
       | 异构资源  | 当已安装[gpu-device-plugin插件](https://support.huaweicloud.com/usermanual-ucs/ucs_10_0141.html)时，可配置GPU限制值，详情请参见[GPU调度](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0295.html)。 当已安装[huawei-npu插件](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0024.html)时，可配置NPU限制值，详情请参见[NPU调度](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0021.html)。 说明： 异构资源该参数，当前仅涉及本地集群工作负载。                                                                                                                                                                                                                                                                                                                                                                                             |
       | 初始化容器 | 选择容器是否作为初始化容器。 Init 容器是一种特殊容器，在Pod内的应用容器启动之前运行。详细说明请参见[Init 容器](https://kubernetes.io/zh/docs/concepts/workloads/pods/init-containers/)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
       | 特权容器  | 特权容器是指容器里面的程序具有一定的特权。 若选中，容器将获得超级权限，例如可以操作宿主机上面的网络设备、修改内核参数等。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
          
       
     
     - 生命周期：设置生命周期回调函数可在容器的特定阶段执行调用，比如容器在停止前希望执行某项操作，就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理，详情请参见[设置容器生命周期](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0148.html)。
     
     - 环境变量：容器运行环境中设定的一个变量，通过环境变量设置的配置项不会随着Pod生命周期结束而变化，详情请参见[设置环境变量](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0150.html)。
     
     - 数据存储：配置容器存储，可以使用本地存储和存储卷声明（PVC）。建议使用PVC将工作负载Pod数据存储在云存储上。若存储在本地磁盘上，节点异常无法恢复时，本地磁盘中的数据也将无法恢复。容器存储相关内容请参见[容器存储](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0112.html)。
      
   
   - 镜像访问凭证：用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用，如所选镜像为公开镜像，则无需选择密钥。密钥的创建方法请参见[创建密钥](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0115.html)。
    
   **高级配置**
   - 标签与注解：您可以单击"添加"为Pod增加标签或注解，新增标签或注解的键不能与已有的重复。
   
   - 任务设置：
     - 并行数：任务负载执行过程中允许同时创建的最大实例数，并行数应不大于实例数。
     
     - 超时时间：当任务执行超出该时间时，任务将会被标识为执行失败，任务下的所有实例都会被删除。为空时表示不设置超时时间。
      
    
   
   
4. 任务创建完成后，在"普通任务"列表中可查看已创建的普通任务。 
   待状态为"处理中"，普通任务创建成功。
   
   
 
#### 创建定时任务
定时任务可用于创建按照设定时间和周期重复执行的任务，任务执行完成后会自动退出。使用场景为在某个固定时间点，为所有运行中的节点做时间同步。
1. （可选）定时任务需要基于镜像创建，若选择私有镜像，用户首先需要将镜像上传至镜像仓库。
2. 登录[UCS控制台](https://console.huaweicloud.com/ucs/?#/aether/dashboard)，进入集群页面，在左侧导航栏中选择"工作负载"，选择"定时任务"页签，并单击右上角"创建负载"。
3. 配置工作负载的信息。 
   **基本信息**
   - 负载类型：选择定时任务CronJob。
   
   - 负载名称：填写工作负载的名称。
   
   - 命名空间：选择工作负载的命名空间，默认为default。您可以单击后面的"创建命名空间"，命名空间的详细介绍请参见[创建命名空间](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0117.html#ucs_01_0117__zh-cn_topic_0167389656_section31143617514)。
    
   **容器配置**
   - 容器信息：Pod中可以配置多个容器，您可以单击右侧"添加容器"为Pod配置多个容器。
     - 基本信息：请参见[表2]。
        表2基本信息参数说明 
       | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
       |:---|:---|
       | 容器名称  | 为容器命名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
       | 镜像名称  | 单击后方"选择镜像"，选择容器使用的镜像。 - 我的镜像：当前区域下镜像仓库中的镜像。若无可用的镜像，可单击"上传镜像"进行上传。  - 镜像中心：开源镜像仓库中的官方镜像。  - 共享镜像：由他人账号共享的私有镜像，详情请参见[共享私有镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0026.html)。                                                 |
       | 镜像版本  | 选择需要部署的镜像版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
       | 更新策略  | 镜像更新/拉取策略。勾选"总是拉取镜像"表示每次都从镜像仓库拉取镜像；如不勾选则优先使用节点已有的镜像，如果没有这个镜像再从镜像仓库拉取。                                                                                                                                                                                                                                                                                                                                                                                                               |
       | CPU配额 | - 申请：容器需要使用的最小CPU值，默认0.25Core。  - 限制：允许容器使用的CPU最大值。建议设容器配额的最高限额，避免容器资源超额导致系统故障。                                                                                                                                                                                                                                            |
       | 内存配额  | - 申请：容器需要使用的内存最小值，默认512MiB。  - 限制：允许容器使用的内存最大值。如果超过，容器会被终止。   关于CPU/内存配额申请和限制的具体说明请参见[设置容器规格](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0147.html)。                                                                                                                                                                  |
       | 异构资源  | 当已安装[gpu-device-plugin插件](https://support.huaweicloud.com/usermanual-ucs/ucs_10_0141.html)时，可配置GPU限制值，详情请参见[GPU调度](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0295.html)。 当已安装[huawei-npu插件](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0024.html)时，可配置NPU限制值，详情请参见[NPU调度](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0021.html)。 说明： 异构资源该参数，当前仅涉及本地集群工作负载。 |
       | 初始化容器 | 选择容器是否作为初始化容器。 Init 容器是一种特殊容器，在 Pod 内的应用容器启动之前运行。详细说明请参见[Init 容器](https://kubernetes.io/zh/docs/concepts/workloads/pods/init-containers/)。                                                                                                                                                                                                                                                                                                             |
       | 特权容器  | 特权容器是指容器里面的程序具有一定的特权。 若选中，容器将获得超级权限，例如可以操作宿主机上面的网络设备、修改内核参数等。                                                                                                                                                                                                                                                                                                                                                                                          |
          
       
     
     - 生命周期：设置生命周期回调函数可在容器的特定阶段执行调用，比如容器在停止前希望执行某项操作，就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理，详情请参见[设置容器生命周期](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0148.html)。
     
     - 环境变量：容器运行环境中设定的一个变量，通过环境变量设置的配置项不会随着Pod生命周期结束而变化，详情请参见[设置环境变量](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0150.html)。
      
   
   - 镜像访问凭证：用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用，如所选镜像为公开镜像，则无需选择密钥。密钥的创建方法请参见[创建密钥](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0115.html)。
    
   **定时规则**
   - 并发策略：支持如下三种模式：
     - Forbid：在前一个任务未完成时，不创建新任务。
     
     - Allow：定时任务不断新建任务，会抢占集群资源。
     
     - Replace：当到达新任务创建时间点，而前一个任务未完成时，新的任务会取代前一个任务。
      
   
   - 定时规则：指定新建定时任务在何时执行，YAML中的定时规则通过CRON表达式实现。
     - 以固定周期执行定时任务，支持的周期单位为分钟、小时、日、月。例如，每30分钟执行一次任务，对应的CRON表达式为"\*/30 \* \* \* \*"，执行时间将从单位范围内的0值开始计算，如**00:00:00** 、**00:30:00** 、**01:00:00** 、**...**。
     
     - 以固定时间（按月）执行定时任务。例如，在每个月1日的0时0分执行任务，对应的CRON表达式为"0 0 1 \*/1 \*"，执行时间为**\*\*\*\*-01-01 00:00:00** 、**\*\*\*\*-02-01 00:00:00** 、**...**。
     
     - 以固定时间（按周）执行定时任务。例如，在每周一的0时0分执行任务，对应的CRON表达式为"0 0 \* \* 1"，执行时间为**\*\*\*\*-\*\*-01 周一 00:00:00** 、**\*\*\*\*-\*\*-08 周一 00:00:00** 、**...**。
     
     - 自定义CRON表达式：关于CRON表达式的用法，可参考[CRON](https://en.wikipedia.org/wiki/Cron)。
     
     
     ![](https://support.huaweicloud.com/usermanual-ucs/public_sys-resources/note_3.0-zh-cn.png)
     - 以固定时间（按月）执行定时任务时，在某月的天数不存在的情况下，任务将不会在该月执行。例如设置天数为30，而2月份没有30号，任务将跳过该月份，在3月30号继续执行。
     
     - 由于CRON表达式的定义，这里的固定周期并非严格意义的周期。将从0开始按周期对其时间单位范围（例如单位为分钟时，则范围为0\~59）进行划分，无法整除时最后一个周期会被重置。因此仅在周期能够平均划分其时间单位范围时，才能表示准确的周期。 举个例子，周期单位为小时，因为"/2、/3、/4、/6、/8和/12"可将24小时整除，所以可以表示准确的周期；而使用其他周期时，在新的一天开始时，最后一个周期将会被重置。比如CRON式为"\* \*/12 \* \* \*"时为准确的周期，每天的执行时间为**00:00:00** 和**12:00:00** ；而CRON式为"\* \*/13 \* \* \*"时，每天的执行时间为**00:00:00** 和**13:00:00**，在第二天0时，虽然没到13个小时的周期还是会被刷新。
       
       
   
   - 任务记录：可以设置保留执行成功或执行失败的任务个数，设置为0表示不保留。
   
   
   **高级配置**
   - 标签与注解：您可以单击"添加"为Pod增加标签或注解，新增标签或注解的键不能与已有的重复。
    
   
   
4. 任务创建完成后，在"定时任务"列表中可查看已创建的定时任务。 
   待状态为"已启动"，定时任务创建成功。
   
   
 
#### 相关操作
- 事件：可以设置查询条件，比如设置事件产生的时间段或搜索事件名称，查看相关事件。
- 实例/任务列表：可以查看相应实例/任务的名称、状态等。
  - 事件：实例产生的事件信息，保存时间为1小时。
  
  - 实例列表：查看实例名称、状态、重启次数等。
  
  - 查看YAML：查看对应实例的YAML文件。
  
  - 删除：删除实例。
   
- 查看/编辑YAML：可以查看/编辑工作负载的YAML文件。
- 删除：删除任务。
- 停止（仅定时任务支持）：停止定时任务。
 
