第 13 章 Job [batch/v1]


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

13.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

JobSpec 描述作业执行的方式。

status

object

JobStatus 代表作业的当前状态。

13.1.1. .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 时,才能设置它。该字段是不可变的。此字段是 alpha-level。当启用 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。此字段是 alpha-level。当启用 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。这是一个 alpha 字段。启用 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 在作业完成后,它可以被自动删除。当作业被删除时,其生命周期保证(如终结器)将会被遵守。如果未设置此字段,则不会自动删除作业。如果此字段设为零,则作业在完成后将立即删除。

13.1.2. .spec.podFailurePolicy

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

rules

数组

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

rules[]

object

PodFailurePolicyRule 描述了在满足要求时如何处理 pod 失败。每个规则都可以使用 onExitCodes 和 onPodConditions 中的一个。

13.1.3. .spec.podFailurePolicy.rules

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

13.1.4. .spec.podFailurePolicy.rules[]

描述
PodFailurePolicyRule 描述了在满足要求时如何处理 pod 失败。每个规则都可以使用 onExitCodes 和 onPodConditions 中的一个。
类型
object
必填
  • action
属性类型描述

action

string

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

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

可能枚举值: - "Count" 是一个在 pod 失败时执行的操作 - pod 失败以默认方式处理 - 计数器到 .backoffLimit,由作业的 .status.failed 字段表示,会递增。- "FailIndex" 是 pod 故障的操作,可能在 pod 失败时执行 - 将作业的索引标记为失败,以避免在这个索引中重启。只有在设置了 backoffLimitPerIndex 时,可以使用此操作。- "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 条件类型匹配的模式。

13.1.5. .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 个元素。

13.1.6. .spec.podFailurePolicy.rules[].onPodConditions

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

13.1.7. .spec.podFailurePolicy.rules[].onPodConditions[]

描述
PodFailurePolicyOnPodConditionsPattern 描述了与实际 pod 条件类型匹配的模式。
类型
object
必填
  • type
  • status
属性类型描述

status

string

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

type

string

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

13.1.8. .status

描述
JobStatus 代表作业的当前状态。
类型
object
属性类型描述

active

整数

待处理的 pod 数量。

completedIndexes

string

当 .spec.completionMode = "Indexed" 采用文本格式时,completedIndexes 包含已完成的索引。索引以十进制整数表示,以逗号分开。数字以增加的顺序列出。三个或更多连续的数字会被压缩,由一系列的第一个和最后一个元素代表,用连字符隔开。例如,如果完成的索引是 1, 3, 4, 5 和 7,它们表示为 "1,3-5,7"。

completionTime

时间

表示作业完成的时间。无法保证在单独的操作之间按顺序设置。它以 RFC3339 格式表示,并以 UTC 表示。只有在作业成功完成后,才会设置完成时间。

conditions

数组

对象当前状态的最新可用影响。当作业失败时,其中一个条件将具有类型 "Failed" 和 status true。当作业被暂停时,其中一个条件类型为 "Suspended" 和 status true;当作业被恢复时,此条件的状态将变为 false。作业完成后,其中一个条件将键入 "Complete" 和 status true。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

conditions[]

object

JobCondition 描述了作业的当前状态。

失败

整数

达到阶段 Failed 的 pod 数量。

failedIndexes

string

当 backoffLimitPerIndex=true 时,FailedIndexes 包含失败的索引。索引以文本格式表示,类似于 completedIndexes 字段 ie。它们被保留为以逗号分开的十进制整数。数字以增加的顺序列出。三个或更多连续的数字会被压缩,由一系列的第一个和最后一个元素代表,用连字符隔开。例如,如果失败的索引为 1, 3, 4, 5 和 7,它们表示为 "1,3-5,7"。此字段是 alpha-level。当启用 JobBackoffLimitPerIndex 功能门时,可以使用它(默认为禁用)。

ready

整数

具有 Ready 条件的 pod 数量。

此字段是 beta 级别。当启用了功能门 JobReadyPods (默认启用)时,作业控制器会填充字段。

startTime

时间

代表作业控制器开始处理作业时。当作业以暂停状态创建时,不会设置此字段,直到在第一次恢复为止。每次从挂起中恢复作业时,都会重置此字段。它以 RFC3339 格式表示,并以 UTC 表示。

succeeded

整数

达到阶段 Succeeded 的 pod 数量。

Terminating

整数

终止的 pod 数量(处于 Pending 或 Running 状态,并具有 deletionTimestamp)。

此字段是 alpha-level。当启用了功能门 JobPodReplacementPolicy (默认为禁用)时,作业控制器会填充字段。

uncountedTerminatedPods

object

UncountedTerminatedPods 包含已终止但没有在作业状态计数器中考虑的 Pod 的 UID。

13.1.9. .status.conditions

描述
对象当前状态的最新可用影响。当作业失败时,其中一个条件将具有类型 "Failed" 和 status true。当作业被暂停时,其中一个条件类型为 "Suspended" 和 status true;当作业被恢复时,此条件的状态将变为 false。作业完成后,其中一个条件将键入 "Complete" 和 status true。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
类型
array

13.1.10. .status.conditions[]

描述
JobCondition 描述了作业的当前状态。
类型
object
必填
  • type
  • status
属性类型描述

lastProbeTime

时间

检查条件最后一次的时间。

lastTransitionTime

时间

条件从一个状态传输到另一个状态最后一次的时间。

message

字符串

人类可读的消息,指示最后一次转换的详细信息。

reason

字符串

(brief)条件最后一次转换的原因。

status

字符串

条件的状态,True, False, Unknown 之一。

type

string

作业状况的类型,完成或失败。

13.1.11. .status.uncountedTerminatedPods

描述
UncountedTerminatedPods 包含已终止但没有在作业状态计数器中考虑的 Pod 的 UID。
类型
object
属性类型描述

失败

数组(字符串)

Failed 包含失败 Pod 的 UID。

succeeded

数组(字符串)

Succeeded 包含成功 Pod 的 UID。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.