最近更新时间:2024.04.26 15:28:57
首次发布时间:2023.10.30 15:47:56
定时任务为指定时间的一次性任务、或者周期性任务。对应 Kubernetes 中的 CronJob。本文为您介绍如何在主控实例中创建定时任务并实现多集群分发。
定时任务采用 Cron 语句设定任务的触发时间,详细介绍和使用限制如下。
Cron 表达式是一个具有时间含义的字符串,每个具有时间含义的字符叫做域,域之间用空格隔开。定时任务支持 5 个域的 Cron 表达式,格式为X X X X X
,X 是一个域的占位符。Cron 表达式中的每个域依次表示分、时、天、月和星期,每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。
# ┌───────────── 分钟 (0 - 59) # │ ┌───────────── 小时 (0 - 23) # │ │ ┌───────────── 日期 (1 - 31) # │ │ │ ┌───────────── 月份 (1 - 12) # │ │ │ │ ┌───────────── 星期 (0 - 6) (周日到周一;在某些系统上,7 也是星期日) # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ │ # * * * * *
注意
如果需要将触发时间具体到 日期,那么建议不设定 星期,以免任务在限定时间外触发。日期和星期同时设定时,其中一个满足即会触发任务执行。
特殊字符 | 含义 | 示例 |
---|---|---|
* | 所有取值范围内的数字。 | 在月域中,* 表示每个月。 |
, | 枚举可能的值。 | 在星期域中,1,2,5 表示星期一、星期二、星期五。 |
- | 指定值的范围。 | 在天域中,28-31 表示月的28、29、30、31号。 |
/ | 数量的递增值。 | 在分钟域中,*/5 表示从第 0 分钟开始的每 5 分钟;3/5 表示从第 3 分钟开始的每 5 分钟。 |
L | 单词 |
|
W | 表示距离天域中指定天最近的工作日(周一至周五)。仅天域支持该字符。 |
说明
|
# | 每月第几个星期几,必须配合具体数字使用,且# 后仅支持1-5。仅星期域支持该字符。 | 7#2 表示月域中指定月份的的第二个星期天。 |
Cron 表达式采用UTC +08:00
时区,即中国时间。因此在配置 Cron 表达式时,如果计划在中国每天 20:00 点触发任务,设置的 Cron 表达式应为0 20 * * *
。
表达式 | 语义 |
---|---|
15 10 \* \* \* | 每天 10:15 触发任务。 |
0 /8 \* \* \* | 每天 08:00、16:00、24:00 触发任务。 |
0 10,14,16 \* \* \* | 每天 10:00 点、14:00 以及 16:00 触发任务。 |
15 10 15 \* \* | 每月 15 日 10:15 触发任务。 |
15 10 L \* \* | 每月最后一天 10:15 触发任务。 |
15 10 \* \* 6L | 每月最后一个星期六 10:15 触发任务。 |
15 10 \* \* 6#3 | 每月第三个星期六 10:15 触发任务。 |
10,44 14 \* 3 3 | 每年三月的星期三的 14:10 和 14:44 触发。 |
15 10 \* \* 1-5 | 每周周一至周五的 10:15 触发。 |
\*/30 \* 15 \* \* | 每月 15 日每隔 30 分钟触发。 |
0 10 15W 3 \* | 每年 3 月 15 日最近的工作日 10:00 触发。 |
*/20 1-6 * * 0,1,3 | 在每个星期日、星期一和星期三的 01:00 和 06:59 之间的第 0、20 和 40 分钟执行。 |
59 1 1-7 4 0 | 4 月 1 日 至 7 日以及 4 月余下的每一个星期日的 1 时 59 分执行。 |
配置项 | 说明 |
---|---|
名称 | 自定义定时任务的名称。要求在同一个命名空间下,名称必须唯一。 |
命名空间 | 选择定时任务部署的命名空间,支持选择自定义创建的命名空间或 Kubernetes 自建的命名空间。 |
标签 | 单击 添加标签,自定义配置定时任务的标签。对应 Kubernetes 中的 Label,用于识别定时任务的键值对,配合选择器,帮助 Kubernetes 快速筛选目标定时任务。例如service.istio.io/canonical-revision:latest 。 |
注解 | 单击 添加注解,自定义配置定时任务的注解信息。对应 Kubernetes 中的 Annotation,主要记录用于应用部署、安全策略、调度策略的附加信息,不用于标识和区分资源。 |
配置项 | 说明 |
---|---|
容器名称 | 根据系统提示的命名规则,输入容器名称。同一个工作负载下容器名称必须唯一。 |
容器镜像 | 容器使用的镜像。支持使用第三方镜像和镜像仓库 CR 中的镜像:
|
镜像版本 | 选择镜像的版本,不选择则默认拉取
|
镜像密钥 | 默认关闭。开启后需要配置镜像仓库密钥。选择已有的仓库密钥或单击 创建仓库密钥,按如下说明补充镜像仓库的密钥:
|
资源配额 | 支持按照业务需求,在容器维度配置 CPU 和内存的上下限,保障容器的健康运行。若不设置,则表示容器资源配额无限制。
说明
|
特权级容器 | 默认关闭。开启后特权级容器可以访问宿主上的设备。支持部署在 Linux 系统上的容器控制网络堆栈或访问设备。 |
Init 容器 | 默认关闭。开启后表示将该容器设置为 Init 容器。Init 容器是 Pod 中,运行在应用容器前的容器,并且它可以包括仅在安装过程中使用的工具(例如 python、dig)和代码,避免在应用容器中的重复部署,提升应用镜像的安全性。 |
配置项 | 说明 |
---|---|
容器端口 | 配置容器中应用对容器外服务的连接端口,包括支持的协议(TCP、UDP)、端口号、端口名称。例如 Nignx 监听端口名称为nginx 的 TCP 协议 80 端口。 |
环境变量 | 配置环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。 |
自定义:输出入变量名称和变量值,创建自定义的环境变量。 | |
配置项:部分引用或全部引用配置项中的变量。部分引用时,一条规则仅支持为一个 Key 创建环境变量。 | |
保密字典:部分引用或全部引用保密字典中的变量。部分引用时,一条规则仅支持为一个 Key 创建环境变量。 | |
实例字段:引用实例字段中的值,创建环境变量。
说明 当选择类型为 | |
容器资源:引用容器中的字段作为环境变量。
| |
添加卷 | 添加数据卷。卷(Volume)是容器中存储数据的位置。为一类数据分配存储资源前,需要先在容器中指定待存储数据的目录。 |
配置项:支持为配置项中的全部数据或部分数据创建数据卷。为部分数据创建存储卷时,支持配置多数据 item,用半角分号 (;)分隔。例如 cm1:path1;cm2:path2 。 | |
保密字典:支持部分挂载或全部挂载保密字典中的数据。为部分数据创建存储卷时,支持配置多数据 item,用半角分号 (;)分隔。例如 cm1:path1;cm2:path2 。 | |
存储卷声明:选择当前工作负载命名空间中已创建的存储卷声明,并为其指定数据卷的名称。 | |
临时目录:为临时目录创建数据卷名称。 | |
主机目录:为主机中的目录创建数据卷。 | |
挂载卷 | 为已创建的卷分配存储资源,并分配读写权限。其中,支持通过 subPath 方式挂载卷的子目录;支持通过 subPathExpr 方式挂载卷的扩展路径。 |
启动命令 | 创建容器时自动注入容器运行前后的执行命令,设置的命令和参数将填写在配置文件中。如果容器镜像中存在相同的命令和参数,那么配置文件中命令和参数将覆盖容器镜像中的对应命令和参数。
|
启动后处理 | 按需配置启动后命令。 |
停止前处理 | 按需配置停止前处理命令。 |
支持配置 存活检查、就绪检查 和 启动检查。允许基于 HTTP 协议、TCP 协议或执行具体命令的方式,探测容器中的负载是否正常。以下以配置存活检查为例,介绍配置参数。
配置项 | 说明 |
---|---|
检查方式 | 配置检查的方式,包括:
|
时间设置 | 配置检查的时间参数,包括:
|
阈值设置 | 配置检查的结果阈值。包括:
|
配置项 | 说明 |
---|---|
Cron 语句 | Cron 语句是一个字符串,通过分钟、小时、日期、月份和星期,分为 5 个域,以空格分割。 |
成功任务保留数 | 保留运行成功任务记录的个数。 |
失败任务保留数 | 保留运行失败任务记录的个数。 |
并发策略 | 任务同时运行的策略:
|
成功运行次数 | 配置定时任务需要 Pod 成功运行的次数。 |
可并行数 | 配置允许 Pod 的并发数。 |
最大超时时间 | 配置任务最大运行时长。 |
重试次数 | 配置任务失败后的重试次数。 |
重启策略 | 配置 Pod 重启策略,包括:永不重启、失败后重启。 |
实例标签 | 配置 Pod 实例标签,配合标签选择器,帮助 Kubernetes 筛选目标 Pod。单击 添加实例标签,根据界面提示输入符合要求的 键 和 值。 |
实例注解 | 配置 Pod 实例注解。单击 添加实例注解,根据界面提示输入符合要求的 键 和 值。 注解对应 Kubernetes 中的 Annotation,不用于标识和区分资源,主要记录用于应用部署、安全策略、调度策略的附加信息。 |
DNS 策略 | 配置实例的 DNS 策略。包括:
|
DNS 服务器地址 | 配置 DNS 服务器的 IP 地址,最多添加 3 条 DNS 服务器地址。 |
DNS 搜索域 | 定义域名的搜索域列表,当访问的域名不能被 DNS 解析时,会把该域名与搜索域列表中的域依次进行组合,并重新向 DNS 发起请求,直到域名被正确解析或者尝试完搜索域列表为止。 |
DNS 解析选项 | 选项中的内容将合并或覆盖基于 DnsPolicy 生成的域名解析文件的 options 字段。 |
安全 | 默认关闭。用于指定容器必须以非 root 权限运行,开启后,若以 root 权限运行,容器将会启动失败。 |
配置项 | 说明 |
---|---|
分发策略 | 部署配置的开关,可根据实际情况(是否已创建策略、是否需要立即分发资源)确定是否需要立即配置策略并分发资源。
|
部署策略 | 根据实际情况配置资源关联的部署策略(包括:命名空间级或集群级)。 |
跟随调度 | 部署策略已开启跟随调度时需要配置,单击 添加,即可根据实际情况配置。 |
差异化策略 | 配置资源关联的差异化策略(包括:命名空间级或集群级),可根据实际情况选择一个或多个差异化策略,的确没有差异时可留空不填。 |
冲突资源接管 | 默认不勾选,表示待分发资源与成员集群中已有资源名称冲突时的处理策略,勾选后将通过联邦资源统一管理已存在的资源。资源冲突场景具体说明及注意事项参见:资源冲突策略。
注意 2023年01月23日之前创建的主控实例不支持指定集群,接管默认全部集群生效。 |
联邦资源的管理操作基本相同,详细介绍参见:管理联邦资源。