任务和定时任务
任务概述
任务管理对应Kubernetes中的Job,分为普通任务和定时任务。
普通任务(Job)是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、StatefulSet)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出了。成功完成的标志根据不同的spec.completions策略而不同:单Pod型任务有一个Pod成功就标志成功。定数成功型任务保证有N个任务全部成功标志成功。工作队列型任务根据应用确认的全局成功而标志成功。
定时任务(CronJob)即定时任务,是基于时间的Job,类似于Linux系统的crontab,在指定的时间周期运行指定的Job,即:
- 在给定时间点只运行一次。
- 在给定时间点周期性地运行。
CronJob的典型用法如下所示:
- 在给定的时间点调度Job运行。
- 创建周期性运行的Job,例如数据库备份、发送邮件。
创建普通任务
普通任务可用于创建仅执行一次的批处理任务,任务执行完成后会自动退出。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。
- (可选)普通任务需要基于镜像创建,若选择私有镜像,用户首先需要将镜像上传至镜像仓库。
- 登录集群控制台,在左侧导航栏中选择“工作负载”,选择“普通任务”页签,并单击右上角“镜像创建”。
- 配置工作负载的信息。
基本信息
- 负载类型:选择普通任务Job。
- 负载名称:填写工作负载的名称。
- 命名空间:选择工作负载的命名空间,默认为default。您可以单击后面的“创建命名空间”,命名空间的详细介绍请参见创建命名空间。
- 实例数量:填写实例的数量,也就是Pod的数量。
容器配置- 容器信息:Pod中可以配置多个容器,您可以单击右侧“添加容器”为Pod配置多个容器。
- 基本信息:请参见表1。
表1 基本信息参数说明 参数
说明
容器名称
为容器命名。
镜像名称
单击后方“选择镜像”,选择容器使用的镜像。
- 我的镜像:当前区域下镜像仓库中的镜像。若无可用的镜像,可单击“上传镜像”进行上传。
- 镜像中心:开源镜像仓库中的官方镜像。
- 共享镜像:由他人账号共享的私有镜像,详情请参见共享私有镜像。
镜像版本
选择需要部署的镜像版本。
更新策略
镜像更新/拉取策略。勾选“总是拉取镜像”表示每次都从镜像仓库拉取镜像;如不勾选则优先使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。
CPU配额
- 申请:容器需要使用的最小CPU值,默认0.25Core。
- 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。
内存配额
- 申请:容器需要使用的内存最小值,默认512MiB。
- 限制:允许容器使用的内存最大值。如果超过,容器会被终止。
关于CPU/内存配额申请和限制的具体说明请参见设置容器规格。
异构资源
当已安装gpu-device-plugin插件时,可配置GPU限制值,详情请参见GPU调度。
当已安装huawei-npu插件时,可配置NPU限制值,详情请参见NPU调度。
说明:异构资源该参数,当前仅涉及本地集群工作负载。
初始化容器
选择容器是否作为初始化容器。
Init 容器是一种特殊容器,在Pod内的应用容器启动之前运行。详细说明请参见Init 容器。
特权容器
特权容器是指容器里面的程序具有一定的特权。
若选中,容器将获得超级权限,例如可以操作宿主机上面的网络设备、修改内核参数等。
- 生命周期:设置生命周期回调函数可在容器的特定阶段执行调用,比如容器在停止前希望执行某项操作,就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理,详情请参见设置容器生命周期。
- 环境变量:容器运行环境中设定的一个变量,通过环境变量设置的配置项不会随着Pod生命周期结束而变化,详情请参见设置环境变量。
- 数据存储:配置容器存储,可以使用本地存储和存储卷声明(PVC)。建议使用PVC将工作负载Pod数据存储在云存储上。若存储在本地磁盘上,节点异常无法恢复时,本地磁盘中的数据也将无法恢复。容器存储相关内容请参见容器存储。
- 基本信息:请参见表1。
- 镜像访问凭证:用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用,如所选镜像为公开镜像,则无需选择密钥。密钥的创建方法请参见创建密钥。
高级配置- 标签与注解:您可以单击“添加”为Pod增加标签或注解,新增标签或注解的键不能与已有的重复。
- 任务设置:
- 并行数:任务负载执行过程中允许同时创建的最大实例数,并行数应不大于实例数。
- 超时时间:当任务执行超出该时间时,任务将会被标识为执行失败,任务下的所有实例都会被删除。为空时表示不设置超时时间。
- 任务创建完成后,在“普通任务”列表中可查看已创建的普通任务。
待状态为“处理中”,普通任务创建成功。
创建定时任务
定时任务可用于创建按照设定时间和周期重复执行的任务,任务执行完成后会自动退出。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。
- (可选)定时任务需要基于镜像创建,若选择私有镜像,用户首先需要将镜像上传至镜像仓库。
- 登录集群控制台,在左侧导航栏中选择“工作负载”,选择“定时任务”页签,并单击右上角“创建负载”。
- 配置工作负载的信息。
基本信息
- 负载类型:选择定时任务CronJob。
- 负载名称:填写工作负载的名称。
- 命名空间:选择工作负载的命名空间,默认为default。您可以单击后面的“创建命名空间”,命名空间的详细介绍请参见创建命名空间。
容器配置- 容器信息:Pod中可以配置多个容器,您可以单击右侧“添加容器”为Pod配置多个容器。
- 基本信息:请参见表2。
表2 基本信息参数说明 参数
说明
容器名称
为容器命名。
镜像名称
单击后方“选择镜像”,选择容器使用的镜像。
- 我的镜像:当前区域下镜像仓库中的镜像。若无可用的镜像,可单击“上传镜像”进行上传。
- 镜像中心:开源镜像仓库中的官方镜像。
- 共享镜像:由他人账号共享的私有镜像,详情请参见共享私有镜像。
镜像版本
选择需要部署的镜像版本。
更新策略
镜像更新/拉取策略。勾选“总是拉取镜像”表示每次都从镜像仓库拉取镜像;如不勾选则优先使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。
CPU配额
- 申请:容器需要使用的最小CPU值,默认0.25Core。
- 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。
内存配额
- 申请:容器需要使用的内存最小值,默认512MiB。
- 限制:允许容器使用的内存最大值。如果超过,容器会被终止。
关于CPU/内存配额申请和限制的具体说明请参见设置容器规格。
异构资源
当已安装gpu-device-plugin插件时,可配置GPU限制值,详情请参见GPU调度。
当已安装huawei-npu插件时,可配置NPU限制值,详情请参见NPU调度。
说明:异构资源该参数,当前仅涉及本地集群工作负载。
初始化容器
选择容器是否作为初始化容器。
Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。详细说明请参见Init 容器。
特权容器
特权容器是指容器里面的程序具有一定的特权。
若选中,容器将获得超级权限,例如可以操作宿主机上面的网络设备、修改内核参数等。
- 生命周期:设置生命周期回调函数可在容器的特定阶段执行调用,比如容器在停止前希望执行某项操作,就可以设置相应的函数。目前提供的生命周期回调函数有启动命令、启动后处理、停止前处理,详情请参见设置容器生命周期。
- 环境变量:容器运行环境中设定的一个变量,通过环境变量设置的配置项不会随着Pod生命周期结束而变化,详情请参见设置环境变量。
- 基本信息:请参见表2。
- 镜像访问凭证:用于访问镜像仓库的凭证。该凭证仅访问私有镜像仓库时使用,如所选镜像为公开镜像,则无需选择密钥。密钥的创建方法请参见创建密钥。
定时规则
- 并发策略:支持如下三种模式:
- 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。
- 以固定时间(按月)执行定时任务时,在某月的天数不存在的情况下,任务将不会在该月执行。例如设置天数为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增加标签或注解,新增标签或注解的键不能与已有的重复。
- 任务创建完成后,在“定时任务”列表中可查看已创建的定时任务。
待状态为“已启动”,定时任务创建成功。
相关操作
- 事件:可以设置查询条件,比如设置事件产生的时间段或搜索事件名称,查看相关事件。
- 实例/任务列表:可以查看相应实例/任务的名称、状态等。
- 事件:实例产生的事件信息,保存时间为1小时。
- 实例列表:查看实例名称、状态、重启次数等。
- 查看YAML:查看对应实例的YAML文件。
- 删除:删除实例。
- 查看/编辑YAML:可以查看/编辑工作负载的YAML文件。
- 删除:删除任务。
- 停止(仅定时任务支持):停止定时任务。