第 6 章 CronJob [batch/v1]


描述
CronJob 代表单个 cron 作业的配置。
类型
对象

6.1. 规格

属性类型描述

apiVersion

字符串

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

CronJobSpec 描述作业执行如何以及实际运行时。

status

object

CronJobStatus 代表 cron 任务的当前状态。

6.1.1. .spec

描述
CronJobSpec 描述作业执行如何以及实际运行时。
类型
object
必填
  • 调度
  • jobTemplate
属性类型描述

concurrencyPolicy

string

指定如何处理作业的并发执行。有效值为:

- "allow" (默认):允许 CronJob 并发运行; - "Forbid": forbids concurrent 运行、跳过下一次运行(如果以前的运行还没有完成); - "Replace": 取消当前运行的作业,并将其替换为新作业

可能枚举值: - "Allow" 允许 CronJob 并发运行。- "Forbid" forbids 并发运行并跳过下一次运行(如果之前还没有完成)。- "Replace" 取消当前运行的作业,并将其替换为新的作业。

failedJobsHistoryLimit

整数

要保留的失败完成作业数量。值必须是非负整数。默认为 1。

jobTemplate

object

JobTemplateSpec 描述从模板创建时作业应具有的数据

调度

string

Cron 格式的调度,请参阅 https://en.wikipedia.org/wiki/Cron

startingDeadlineSeconds

整数

如果因为任何原因而错过了调度时间,则可选截止时间(以秒为单位)。错过的作业执行计为失败的作业。

successfulJobsHistoryLimit

整数

要保留的成功完成作业数量。值必须是非负整数。默认值为 3。

suspend

布尔值

此标志告知控制器暂停后续执行,它不会应用到已经启动的执行。默认为false。

timeZone

string

给定调度的时区名称,请参阅 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
属性类型描述

metadata

ObjectMeta

从该模板创建的作业的标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

object

JobSpec 描述作业执行的方式。

6.1.3. .spec.jobTemplate.spec

描述
JobSpec 描述作业执行的方式。
类型
object
必填
  • 模板
属性类型描述

activeDeadlineSeconds

整数

指定与 startTime 相关的持续时间(以秒为单位),作业可能会在系统尝试终止它前持续激活;值必须是正整数。如果作业被挂起(在创建或通过更新时),则当作业再次恢复时,此计时器将有效停止并重置。

backoffLimit

整数

指定在标记此作业失败前重试次数。默认值为 6

backoffLimitPerIndex

整数

指定索引在将索引标记为失败前在索引中重试次数的限制。当启用每个索引的失败次数时,pod 的 batch.kubernetes.io/job-index-failure-count 注解会保持在 pod 的 batch.kubernetes.io/job-index-failure-count 注解中。只有在作业的 completionMode=Indexed 且 Pod 的重启策略为 Never 时,才能设置它。该字段是不可变的。此字段是 beta 级别。当启用 JobBackoffLimitPerIndex 功能门时(默认启用)时,可以使用它。

completionMode

string

completionMode 指定 Pod 完成的跟踪方式。它可以是 NonIndexed (默认)或 Indexed

NonIndexed 表示当 .spec.completions 成功完成 Pod 时,作业被视为已完成。每个 Pod 完成都相互同动。

索引 表示作业的 Pod 从 0 到(.spec.completions - 1),注解 batch.kubernetes.io/job-completion-index 提供。当每个索引都有一个成功完成 Pod 时,作业被视为已完成。当值为 Indexed 时,必须指定 .spec.completions,并且 .spec.parallelism 必须小于或等于 10^5。另外,Pod 名称采用 $(job-name)-$(index)-$(random-string) 的形式,Pod 主机名采用 $(job-name)-$(index) 的形式。

以后可以添加更多完成模式。如果作业控制器观察到没有识别的模式,则控制器会因为版本 skew 而导致升级,则控制器会跳过作业的更新。

可能枚举值: - "Indexed" 是一个作业完成模式。在此模式中,作业的 Pod 从 0 到(.spec.completions - 1)获取关联的完成索引。当 Pod 完成每个完成索引后,作业被视为已完成。- "NonIndexed" 是一个作业完成模式。在这个模式中,当 .spec.completions 成功完成 Pod 时,作业被视为已完成。Pod 完成相互同动。

completions

整数

指定作业应该运行成功完成的 pod 数量。将 设置为 null 意味着,任何 pod 成功都会提示所有 pod 成功,并允许并行( parallelism)具有任何正数的值。设置为 1 表示并行性限制为 1,pod 的成功会通知作业成功。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

manualSelector

布尔值

manualSelector 控制 pod 标签和 pod 选择器的生成。除非您确定正在执行的操作,否则请保留 manualSelector。如果为 false 或未设置,系统会选择此作业的唯一标签,并将这些标签附加到 pod 模板。为 true 时,用户负责选择唯一标签并指定选择器。无法选择唯一标签可能会导致此和其他作业无法正常工作。但是,在使用旧 extensions/v1beta1 API 创建的作业中看到 manualSelector=true。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector

maxFailedIndexes

整数

当设置了 backoffLimitPerIndex 时,在将作业标记为失败前指定失败索引的最大数量。当失败的索引数量超过这个数字后,整个作业都会标记为 Failed,其执行将被终止。当保留为 null 时,作业将继续执行其所有索引,并标记为 Complete 作业条件。只有在设置了 backoffLimitPerIndex 时,才能指定它。它可以是 null,也可以是 up to completions。它是必需的,且在完成大于 10^5 时必须小于或等于 10^4。此字段是 beta 级别。当启用 JobBackoffLimitPerIndex 功能门时(默认启用)时,可以使用它。

parallelism

整数

指定作业应在任意给定时间运行的最大 pod 数量。当(.spec.completions - .status.successful)< .spec.parallelism)< .spec.parallelism)时,以 steady 状态运行的 pod 的实际数量将小于这个数字。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

podFailurePolicy

object

PodFailurePolicy 描述了 pod 失败会影响 backoffLimit。

podReplacementPolicy

string

podReplacementPolicy 指定何时创建替换 Pod。可能的值有: - TerminatingOrFailed 表示,我们在终止时重新创建 pod (带有 metadata.deletionTimestamp)或失败。- Failed 表示在创建替换 Pod 前等待到之前创建的 Pod 完全终止(has phase Failed 或 Succeeded)。

使用 podFailurePolicy 时,Failed 是唯一允许的值。当 podFailurePolicy 没有使用时,允许 TerminatingOrFailed 和 Failed。这是 beta 字段。要使用此功能,请启用 JobPodReplacementPolicy 功能切换。默认为开启。

可能枚举值:- "Failed" 用于在创建替换 Pod 前等待之前创建的 Pod 完全终止(has phase Failed 或 Succeeded)。- "TerminatingOrFailed" 意味着,我们在终止时重新创建 pod (获取 metadata.deletionTimestamp)或失败。

selector

LabelSelector

与 pod 数量匹配的 pod 的标签查询。通常,系统会为您设置此字段。更多信息: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

suspend

布尔值

suspend 指定作业控制器是否应该创建 Pod。如果创建一个作业,并将 suspend 设为 true,则作业控制器不会创建 Pod。如果在创建后暂停某个作业(例如,标志从 false 变为 true),则作业控制器将删除与此作业关联的所有活动 Pod。用户必须设计自己的工作负载才能正常处理。暂停作业将重置作业的 StartTime 字段,从而有效地重置 ActiveDeadlineSeconds 计时器。默认为false。

模板

PodTemplateSpec

描述在执行作业时将创建的 pod。唯一允许的 template.spec.restartPolicy 值是 "Never" 或 "OnFailure"。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

ttlSecondsAfterFinished

整数

ttlSecondsAfterFinished 限制已完成执行( Complete 或 Failed)的作业的生命周期。如果设置了此字段,ttlSecondsAfterFinished 在作业完成后,它可以被自动删除。当作业被删除时,其生命周期保证(如终结器)将会被遵守。如果未设置此字段,则不会自动删除作业。如果此字段设为零,则作业在完成后将立即删除。

6.1.4. .spec.jobTemplate.spec.podFailurePolicy

描述
PodFailurePolicy 描述了 pod 失败会影响 backoffLimit。
类型
object
必填
  • rules
属性类型描述

rules

数组

Pod 失败策略规则列表。规则按顺序评估。当规则与 Pod 故障匹配后,其余的规则将被忽略。如果没有与 Pod 故障匹配的规则,则应用默认处理 - pod 故障的计数器会递增,并针对 backoffLimit 检查。最多允许 20 个元素。

rules[]

object

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
属性类型描述

action

string

指定满足要求时 pod 故障执行的操作。可能的值有:

- FailJob: 表示 pod 的作业标记为 Failed,所有运行的 pod 都被终止。- FailIndex: 表示 pod 的索引标记为 Failed,且不会重启。这个值是 beta 级别。当启用 JobBackoffLimitPerIndex 功能门时,可以使用它。- Ignore: 表示对 .backoffLimit 的计数器没有被递增,并创建了替换 pod。- Count: 表示 pod 被默认处理 - .backoffLimit 的计数器会递增。以后会考虑添加额外的值。客户端应通过跳过规则来响应未知操作。

可能枚举值: - "Count" 是一个在 pod 失败时执行的操作 - pod 失败以默认方式处理 - 计数器到 .backoffLimit,由作业的 .status.failed 字段表示,会递增。- "FailIndex" 是 pod 故障的操作,可能在 pod 失败时执行 - 将作业的索引标记为失败,以避免在这个索引中重启。只有在设置了 backoffLimitPerIndex 时,才可以使用此操作。这个值是 beta-level。- "FailJob" 这是可能在 pod 失败时执行的操作 - 将 pod 的作业标记为 Failed,终止所有运行的 pod。- "Ignore" 这是可能在 pod 故障上执行的操作 - 对 .backoffLimit 的计数器(由作业的 .status.failed 字段表示)不会被递增,并创建了替换 pod。

onExitCodes

object

PodFailurePolicyOnExitCodesRequirement 描述了根据容器退出代码处理失败 pod 的要求。特别是,它会分别查找每个应用程序容器和 init 容器状态的 .state.terminated.exitCode,分别由 Pod 状态中的 .status.containerStatuses 和 .status.initContainerStatuses 字段显示。成功完成的容器(退出代码 0)不包括在要求检查中。

onPodConditions

数组

代表 pod 条件的要求。要求以 pod 条件模式列表表示。如果至少有一个模式与实际的 pod 条件匹配,则满足要求。最多允许 20 个元素。

onPodConditions[]

object

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
属性类型描述

containerName

string

使用指定名称将退出代码限制为容器。当为 null 时,该规则适用于所有容器。指定后,它应当与 pod 模板中的一个容器或 initContainer 名称匹配。

operator

string

代表容器退出代码和指定的值之间的关系。成功完成的容器(退出代码 0)不包括在要求检查中。可能的值有:

- in: 如果至少有一个容器退出代码(如果多个容器没有被 'containerName' 字段限制)位于指定的值集合中,则满足要求。- 如果至少一个容器退出代码(如果多个容器没有被 'containerName' 字段限制),则要求会满足。以后会考虑添加额外的值。假设不满足要求,客户端应该对未知操作器做出反应。

可能枚举值: - "In" - "NotIn"

values

数组(整数)

指定一组值。每个返回的容器退出代码(如果有多个容器)都会针对于 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
属性类型描述

status

string

指定所需的 Pod 条件状态。要匹配 pod 条件,需要指定的状态等于 pod 条件状态。默认值为 True。

type

string

指定所需的 Pod 条件类型。要匹配 pod 条件,需要指定类型等于 pod 条件类型。

6.1.10. .status

描述
CronJobStatus 代表 cron 任务的当前状态。
类型
object
属性类型描述

active

array (ObjectReference)

指向当前运行的作业的指针列表。

lastScheduleTime

时间

最后一次调度作业的时间信息。

lastSuccessfulTime

时间

信息是作业成功完成最后一次的时间。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.