第 13 章 Job [batch/v1]
- 描述
- Job 代表单个作业的配置。
- 类型
-
对象
13.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 | |
|
| JobSpec 描述作业执行的方式。 |
|
| JobStatus 代表作业的当前状态。 |
13.1.1. .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 时,才能设置它。该字段是不可变的。此字段是 alpha-level。当启用 |
|
|
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。这是一个 alpha 字段。启用 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 在作业完成后,它可以被自动删除。当作业被删除时,其生命周期保证(如终结器)将会被遵守。如果未设置此字段,则不会自动删除作业。如果此字段设为零,则作业在完成后将立即删除。 |
13.1.2. .spec.podFailurePolicy
- 描述
- PodFailurePolicy 描述了 pod 失败会影响 backoffLimit。
- 类型
-
object
- 必填
-
rules
-
属性 | 类型 | 描述 |
---|---|---|
|
| Pod 失败策略规则列表。规则按顺序评估。当规则与 Pod 故障匹配后,其余的规则将被忽略。如果没有与 Pod 故障匹配的规则,则应用默认处理 - pod 故障的计数器会递增,并针对 backoffLimit 检查。最多允许 20 个元素。 |
|
| 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
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指定满足要求时 pod 故障执行的操作。可能的值有:
- FailJob: 表示 pod 的作业标记为 Failed,所有运行的 pod 都被终止。- FailIndex: 表示 pod 的索引标记为 Failed,且不会重启。这个值是 alpha-level。当
可能枚举值: - |
|
| PodFailurePolicyOnExitCodesRequirement 描述了根据容器退出代码处理失败 pod 的要求。特别是,它会分别查找每个应用程序容器和 init 容器状态的 .state.terminated.exitCode,分别由 Pod 状态中的 .status.containerStatuses 和 .status.initContainerStatuses 字段显示。成功完成的容器(退出代码 0)不包括在要求检查中。 |
|
| 代表 pod 条件的要求。要求以 pod 条件模式列表表示。如果至少有一个模式与实际的 pod 条件匹配,则满足要求。最多允许 20 个元素。 |
|
| PodFailurePolicyOnPodConditionsPattern 描述了与实际 pod 条件类型匹配的模式。 |
13.1.5. .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 个元素。 |
13.1.6. .spec.podFailurePolicy.rules[].onPodConditions
- 描述
- 代表 pod 条件的要求。要求以 pod 条件模式列表表示。如果至少有一个模式与实际的 pod 条件匹配,则满足要求。最多允许 20 个元素。
- 类型
-
数组
13.1.7. .spec.podFailurePolicy.rules[].onPodConditions[]
- 描述
- PodFailurePolicyOnPodConditionsPattern 描述了与实际 pod 条件类型匹配的模式。
- 类型
-
object
- 必填
-
type
-
status
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指定所需的 Pod 条件状态。要匹配 pod 条件,需要指定的状态等于 pod 条件状态。默认值为 True。 |
|
| 指定所需的 Pod 条件类型。要匹配 pod 条件,需要指定类型等于 pod 条件类型。 |
13.1.8. .status
- 描述
- JobStatus 代表作业的当前状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| 待处理的 pod 数量。 |
|
| 当 .spec.completionMode = "Indexed" 采用文本格式时,completedIndexes 包含已完成的索引。索引以十进制整数表示,以逗号分开。数字以增加的顺序列出。三个或更多连续的数字会被压缩,由一系列的第一个和最后一个元素代表,用连字符隔开。例如,如果完成的索引是 1, 3, 4, 5 和 7,它们表示为 "1,3-5,7"。 |
| 表示作业完成的时间。无法保证在单独的操作之间按顺序设置。它以 RFC3339 格式表示,并以 UTC 表示。只有在作业成功完成后,才会设置完成时间。 | |
|
| 对象当前状态的最新可用影响。当作业失败时,其中一个条件将具有类型 "Failed" 和 status true。当作业被暂停时,其中一个条件类型为 "Suspended" 和 status true;当作业被恢复时,此条件的状态将变为 false。作业完成后,其中一个条件将键入 "Complete" 和 status true。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ |
|
| JobCondition 描述了作业的当前状态。 |
|
| 达到阶段 Failed 的 pod 数量。 |
|
|
当 backoffLimitPerIndex=true 时,FailedIndexes 包含失败的索引。索引以文本格式表示,类似于 |
|
| 具有 Ready 条件的 pod 数量。 此字段是 beta 级别。当启用了功能门 JobReadyPods (默认启用)时,作业控制器会填充字段。 |
| 代表作业控制器开始处理作业时。当作业以暂停状态创建时,不会设置此字段,直到在第一次恢复为止。每次从挂起中恢复作业时,都会重置此字段。它以 RFC3339 格式表示,并以 UTC 表示。 | |
|
| 达到阶段 Succeeded 的 pod 数量。 |
|
| 终止的 pod 数量(处于 Pending 或 Running 状态,并具有 deletionTimestamp)。 此字段是 alpha-level。当启用了功能门 JobPodReplacementPolicy (默认为禁用)时,作业控制器会填充字段。 |
|
| 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
-
属性 | 类型 | 描述 |
---|---|---|
| 检查条件最后一次的时间。 | |
| 条件从一个状态传输到另一个状态最后一次的时间。 | |
|
| 人类可读的消息,指示最后一次转换的详细信息。 |
|
| (brief)条件最后一次转换的原因。 |
|
| 条件的状态,True, False, Unknown 之一。 |
|
| 作业状况的类型,完成或失败。 |
13.1.11. .status.uncountedTerminatedPods
- 描述
- UncountedTerminatedPods 包含已终止但没有在作业状态计数器中考虑的 Pod 的 UID。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| Failed 包含失败 Pod 的 UID。 |
|
| Succeeded 包含成功 Pod 的 UID。 |