第 6 章 CronJob [batch/v1]
- 描述
- CronJob 代表单个 cron 作业的配置。
- 类型
-
对象
6.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| CronJobSpec 描述作业执行如何以及实际运行时。 |
|
| CronJobStatus 代表 cron 任务的当前状态。 |
6.1.1. .spec
- 描述
- CronJobSpec 描述作业执行如何以及实际运行时。
- 类型
-
object
- 必填
-
调度
-
jobTemplate
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指定如何处理作业的并发执行。有效值为: - "allow" (默认):允许 CronJob 并发运行; - "Forbid": forbids concurrent 运行、跳过下一次运行(如果以前的运行还没有完成); - "Replace": 取消当前运行的作业,并将其替换为新作业
可能枚举值: - |
|
| 要保留的失败完成作业数量。值必须是非负整数。默认为 1。 |
|
| JobTemplateSpec 描述从模板创建时作业应具有的数据 |
|
| Cron 格式的调度,请参阅 https://en.wikipedia.org/wiki/Cron。 |
|
| 如果因为任何原因而错过了调度时间,则可选截止时间(以秒为单位)。错过的作业执行计为失败的作业。 |
|
| 要保留的成功完成作业数量。值必须是非负整数。默认值为 3。 |
|
| 此标志告知控制器暂停后续执行,它不会应用到已经启动的执行。默认为false。 |
|
| 给定调度的时区名称,请参阅 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones。如果没有指定,则默认为 kube-controller-manager 进程的时区。在 CronJob 验证过程中,API 服务器从系统范围的时区数据库加载有效的时区名称和时区偏移集。如果没有找到系统范围的时区数据库,则改为使用数据库的捆绑版本。如果在 CronJob 的生命周期内或主机配置有变化而变得无效,控制器会停止创建新作业,并将创建一个具有 UnknownTimeZone 原因的系统事件。如需更多信息,请参阅 https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones |
6.1.2. .spec.jobTemplate
- 描述
- JobTemplateSpec 描述从模板创建时作业应具有的数据
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| 从该模板创建的作业的标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| JobSpec 描述作业执行的方式。 |
6.1.3. .spec.jobTemplate.spec
- 描述
- JobSpec 描述作业执行的方式。
- 类型
-
object
- 必填
-
模板
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指定与 startTime 相关的持续时间(以秒为单位),作业可能会在系统尝试终止它前持续激活;值必须是正整数。如果作业被挂起(在创建或通过更新时),则当作业再次恢复时,此计时器将有效停止并重置。 |
|
| 指定在标记此作业失败前重试次数。默认值为 6 |
|
|
指定索引在将索引标记为失败前在索引中重试次数的限制。当启用每个索引的失败次数时,pod 的 batch.kubernetes.io/job-index-failure-count 注解会保持在 pod 的 batch.kubernetes.io/job-index-failure-count 注解中。只有在作业的 completionMode=Indexed 且 Pod 的重启策略为 Never 时,才能设置它。该字段是不可变的。此字段是 beta 级别。当启用 |
|
|
completionMode 指定 Pod 完成的跟踪方式。它可以是
以后可以添加更多完成模式。如果作业控制器观察到没有识别的模式,则控制器会因为版本 skew 而导致升级,则控制器会跳过作业的更新。
可能枚举值: - |
|
| 指定作业应该运行成功完成的 pod 数量。将 设置为 null 意味着,任何 pod 成功都会提示所有 pod 成功,并允许并行( parallelism)具有任何正数的值。设置为 1 表示并行性限制为 1,pod 的成功会通知作业成功。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
|
manualSelector 控制 pod 标签和 pod 选择器的生成。除非您确定正在执行的操作,否则请保留 |
|
|
当设置了 backoffLimitPerIndex 时,在将作业标记为失败前指定失败索引的最大数量。当失败的索引数量超过这个数字后,整个作业都会标记为 Failed,其执行将被终止。当保留为 null 时,作业将继续执行其所有索引,并标记为 |
|
| 指定作业应在任意给定时间运行的最大 pod 数量。当(.spec.completions - .status.successful)< .spec.parallelism)< .spec.parallelism)时,以 steady 状态运行的 pod 的实际数量将小于这个数字。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
| PodFailurePolicy 描述了 pod 失败会影响 backoffLimit。 |
|
| podReplacementPolicy 指定何时创建替换 Pod。可能的值有: - TerminatingOrFailed 表示,我们在终止时重新创建 pod (带有 metadata.deletionTimestamp)或失败。- Failed 表示在创建替换 Pod 前等待到之前创建的 Pod 完全终止(has phase Failed 或 Succeeded)。 使用 podFailurePolicy 时,Failed 是唯一允许的值。当 podFailurePolicy 没有使用时,允许 TerminatingOrFailed 和 Failed。这是 beta 字段。要使用此功能,请启用 JobPodReplacementPolicy 功能切换。默认为开启。
可能枚举值:- |
| 与 pod 数量匹配的 pod 的标签查询。通常,系统会为您设置此字段。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors | |
|
| suspend 指定作业控制器是否应该创建 Pod。如果创建一个作业,并将 suspend 设为 true,则作业控制器不会创建 Pod。如果在创建后暂停某个作业(例如,标志从 false 变为 true),则作业控制器将删除与此作业关联的所有活动 Pod。用户必须设计自己的工作负载才能正常处理。暂停作业将重置作业的 StartTime 字段,从而有效地重置 ActiveDeadlineSeconds 计时器。默认为false。 |
| 描述在执行作业时将创建的 pod。唯一允许的 template.spec.restartPolicy 值是 "Never" 或 "OnFailure"。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ | |
|
| ttlSecondsAfterFinished 限制已完成执行( Complete 或 Failed)的作业的生命周期。如果设置了此字段,ttlSecondsAfterFinished 在作业完成后,它可以被自动删除。当作业被删除时,其生命周期保证(如终结器)将会被遵守。如果未设置此字段,则不会自动删除作业。如果此字段设为零,则作业在完成后将立即删除。 |
6.1.4. .spec.jobTemplate.spec.podFailurePolicy
- 描述
- PodFailurePolicy 描述了 pod 失败会影响 backoffLimit。
- 类型
-
object
- 必填
-
rules
-
属性 | 类型 | 描述 |
---|---|---|
|
| Pod 失败策略规则列表。规则按顺序评估。当规则与 Pod 故障匹配后,其余的规则将被忽略。如果没有与 Pod 故障匹配的规则,则应用默认处理 - pod 故障的计数器会递增,并针对 backoffLimit 检查。最多允许 20 个元素。 |
|
| PodFailurePolicyRule 描述了在满足要求时如何处理 pod 失败。每个规则都可以使用 onExitCodes 和 onPodConditions 中的一个。 |
6.1.5. .spec.jobTemplate.spec.podFailurePolicy.rules
- 描述
- Pod 失败策略规则列表。规则按顺序评估。当规则与 Pod 故障匹配后,其余的规则将被忽略。如果没有与 Pod 故障匹配的规则,则应用默认处理 - pod 故障的计数器会递增,并针对 backoffLimit 检查。最多允许 20 个元素。
- 类型
-
数组
6.1.6. .spec.jobTemplate.spec.podFailurePolicy.rules[]
- 描述
- PodFailurePolicyRule 描述了在满足要求时如何处理 pod 失败。每个规则都可以使用 onExitCodes 和 onPodConditions 中的一个。
- 类型
-
object
- 必填
-
action
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指定满足要求时 pod 故障执行的操作。可能的值有:
- FailJob: 表示 pod 的作业标记为 Failed,所有运行的 pod 都被终止。- FailIndex: 表示 pod 的索引标记为 Failed,且不会重启。这个值是 beta 级别。当启用
可能枚举值: - |
|
| PodFailurePolicyOnExitCodesRequirement 描述了根据容器退出代码处理失败 pod 的要求。特别是,它会分别查找每个应用程序容器和 init 容器状态的 .state.terminated.exitCode,分别由 Pod 状态中的 .status.containerStatuses 和 .status.initContainerStatuses 字段显示。成功完成的容器(退出代码 0)不包括在要求检查中。 |
|
| 代表 pod 条件的要求。要求以 pod 条件模式列表表示。如果至少有一个模式与实际的 pod 条件匹配,则满足要求。最多允许 20 个元素。 |
|
| PodFailurePolicyOnPodConditionsPattern 描述了与实际 pod 条件类型匹配的模式。 |
6.1.7. .spec.jobTemplate.spec.podFailurePolicy.rules[].onExitCodes
- 描述
- PodFailurePolicyOnExitCodesRequirement 描述了根据容器退出代码处理失败 pod 的要求。特别是,它会分别查找每个应用程序容器和 init 容器状态的 .state.terminated.exitCode,分别由 Pod 状态中的 .status.containerStatuses 和 .status.initContainerStatuses 字段显示。成功完成的容器(退出代码 0)不包括在要求检查中。
- 类型
-
object
- 必填
-
operator
-
values
-
属性 | 类型 | 描述 |
---|---|---|
|
| 使用指定名称将退出代码限制为容器。当为 null 时,该规则适用于所有容器。指定后,它应当与 pod 模板中的一个容器或 initContainer 名称匹配。 |
|
| 代表容器退出代码和指定的值之间的关系。成功完成的容器(退出代码 0)不包括在要求检查中。可能的值有: - in: 如果至少有一个容器退出代码(如果多个容器没有被 'containerName' 字段限制)位于指定的值集合中,则满足要求。- 如果至少一个容器退出代码(如果多个容器没有被 'containerName' 字段限制),则要求会满足。以后会考虑添加额外的值。假设不满足要求,客户端应该对未知操作器做出反应。
可能枚举值: - |
|
| 指定一组值。每个返回的容器退出代码(如果有多个容器)都会针对于 Operator 相关的一组值进行检查。值列表必须排序,且不得包含重复值。值 '0' 不能用于 In operator。至少需要一个元素。最多允许 255 个元素。 |
6.1.8. .spec.jobTemplate.spec.podFailurePolicy.rules[].onPodConditions
- 描述
- 代表 pod 条件的要求。要求以 pod 条件模式列表表示。如果至少有一个模式与实际的 pod 条件匹配,则满足要求。最多允许 20 个元素。
- 类型
-
数组
6.1.9. .spec.jobTemplate.spec.podFailurePolicy.rules[].onPodConditions[]
- 描述
- PodFailurePolicyOnPodConditionsPattern 描述了与实际 pod 条件类型匹配的模式。
- 类型
-
object
- 必填
-
type
-
status
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指定所需的 Pod 条件状态。要匹配 pod 条件,需要指定的状态等于 pod 条件状态。默认值为 True。 |
|
| 指定所需的 Pod 条件类型。要匹配 pod 条件,需要指定类型等于 pod 条件类型。 |
6.1.10. .status
- 描述
- CronJobStatus 代表 cron 任务的当前状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| 指向当前运行的作业的指针列表。 | |
| 最后一次调度作业的时间信息。 | |
| 信息是作业成功完成最后一次的时间。 |