Job

Job 代表单个作业的配置。

apiVersion: batch/v1

import "k8s.io/api/batch/v1"

Job

Job 代表单个作业的配置。


JobSpec

JobSpec 描述作业执行将是什么样子。


副本

生命周期

  • completions (int32)

    指定作业应运行的成功完成的 Pod 的所需数量。设置为 null 表示任何 Pod 的成功都表示所有 Pod 的成功,并允许并行度具有任何正值。设置为 1 表示并行度限制为 1,并且该 Pod 的成功表示作业的成功。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/controllers/jobs-run-to-completion/

  • completionMode (string)

    completionMode 指定如何跟踪 Pod 完成情况。它可以是 NonIndexed(默认)或 Indexed

    NonIndexed 表示当有 .spec.completions 个成功完成的 Pod 时,作业被视为完成。每个 Pod 完成都是同源的。

    Indexed 表示作业的 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) 形式。

    将来可以添加更多完成模式。如果作业控制器观察到它不认识的模式(由于版本偏差,这在升级期间是可能的),则控制器会跳过作业的更新。

  • backoffLimit (int32)

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

  • activeDeadlineSeconds (int64)

    指定相对于 startTime 的持续时间(以秒为单位),在系统尝试终止作业之前,作业可以持续处于活动状态;值必须为正整数。如果作业被挂起(在创建时或通过更新),则此计时器将有效地停止并重置,直到作业再次恢复。

  • ttlSecondsAfterFinished (int32)

    ttlSecondsAfterFinished 限制已完成执行(已完成或失败)的作业的生命周期。如果设置了此字段,则在作业完成后的 ttlSecondsAfterFinished 后,它有资格被自动删除。当作业正在被删除时,它的生命周期保证(例如,终结器)将得到遵守。如果未设置此字段,则作业不会被自动删除。如果将此字段设置为零,则作业在完成后的立即时间内有资格被删除。

  • suspend (boolean)

    suspend 指定作业控制器是否应该创建 Pod。如果作业在创建时将 suspend 设置为 true,则作业控制器不会创建任何 Pod。如果作业在创建后被挂起(即标志从 false 变为 true),则作业控制器将删除与该作业相关联的所有活动 Pod。用户必须设计其工作负载以优雅地处理此问题。挂起作业将重置作业的 StartTime 字段,从而有效地重置 ActiveDeadlineSeconds 计时器。默认为 false。

选择器

Beta 级别

  • podFailurePolicy (PodFailurePolicy)

    指定处理失败 Pod 的策略。特别地,它允许指定需要满足的一组操作和条件,以执行相关操作。如果为空,则应用默认行为 - 失败 Pod 的计数(由作业的 .status.failed 字段表示)会增加,并且会针对 backoffLimit 进行检查。此字段不能与 restartPolicy=OnFailure 结合使用。

    此字段为 beta 级别。当 JobPodFailurePolicy 功能门打开时(默认情况下打开),可以使用它。

    PodFailurePolicy 描述失败的 Pod 如何影响 backoffLimit。

    • podFailurePolicy.rules ([]PodFailurePolicyRule), 必需

      原子:在合并期间将被替换

      Pod 失败策略规则的列表。这些规则按顺序进行评估。一旦一个规则匹配一个 Pod 失败,其余规则将被忽略。当没有规则匹配 Pod 失败时,将应用默认处理 - 失败 Pod 的计数会增加,并且会针对 backoffLimit 进行检查。最多允许 20 个元素。

      PodFailurePolicyRule 描述当满足要求时如何处理 Pod 失败。每个规则中可以使用 onExitCodes 和 onPodConditions 之一,但不能同时使用两者。

      • podFailurePolicy.rules.action (string), 必需

        指定当满足要求时对 Pod 失败采取的操作。可能的值为

        • FailJob:表示 Pod 的作业被标记为失败,并且所有正在运行的 Pod 都被终止。
        • FailIndex:表示 Pod 的索引被标记为失败,并且不会重新启动。此值为 alpha 级别。当 JobBackoffLimitPerIndex 功能门打开时(默认情况下关闭),可以使用它。
        • Ignore:表示不会增加 .backoffLimit 的计数器,并且会创建一个替换 Pod。
        • Count:表示 Pod 以默认方式处理 - 增加 .backoffLimit 的计数器。将来可能会添加其他值。客户端应该通过跳过规则来对未知操作做出反应。
      • podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern), 必需

        原子:在合并期间将被替换

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

        PodFailurePolicyOnPodConditionsPattern 描述匹配实际 Pod 条件类型的模式。

        • podFailurePolicy.rules.onPodConditions.status (string), 必需

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

        • podFailurePolicy.rules.onPodConditions.type (string), 必需

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

      • podFailurePolicy.rules.onExitCodes (PodFailurePolicyOnExitCodesRequirement)

        表示对容器退出代码的要求。

        PodFailurePolicyOnExitCodesRequirement 描述基于容器退出代码处理失败 Pod 的要求。特别地,它查找每个应用程序容器和初始化容器状态的 .state.terminated.exitCode,分别由 Pod 状态中的 .status.containerStatuses 和 .status.initContainerStatuses 字段表示。成功完成(退出代码 0)的容器将从要求检查中排除。

        • podFailurePolicy.rules.onExitCodes.operator (string), 必需

          表示容器退出代码与指定值之间的关系。成功完成(退出代码 0)的容器将从要求检查中排除。可能的值为

          • In:如果至少一个容器退出代码(如果有多个容器不受'containerName'字段限制,则可能有多个)在指定值集中,则满足要求。
          • NotIn:如果至少一个容器退出代码(如果有多个容器不受'containerName'字段限制,则可能有多个)不在指定值集中,则满足要求。将来会添加其他值。客户端应通过假设不满足要求来对未知运算符做出反应。
        • podFailurePolicy.rules.onExitCodes.values ([]int32),必需

          集:合并期间将保留唯一值

          指定值的集合。每个返回的容器退出代码(在多个容器的情况下可能有多个)都会根据运算符针对此值集进行检查。值列表必须按顺序排列,并且不能包含重复项。值'0'不能用于In运算符。至少需要一个元素。最多允许 255 个元素。

        • podFailurePolicy.rules.onExitCodes.containerName (string)

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

Alpha 级

  • backoffLimitPerIndex (int32)

    指定在将此索引标记为失败之前,在索引内重试次数的限制。启用后,每个索引的失败次数将保存在 pod 的 batch.kubernetes.io/job-index-failure-count 批注中。它只能在 Job 的 completionMode=Indexed 时设置,并且 Pod 的重启策略为 Never。该字段是不可变的。此字段处于 Alpha 级。当JobBackoffLimitPerIndex 特性门启用时(默认情况下禁用),可以使用它。

  • maxFailedIndexes (int32)

    指定在将 Job 标记为失败之前,当 backoffLimitPerIndex 设置时,失败索引的最大数量。一旦失败索引的数量超过此数量,整个 Job 将被标记为失败,并且其执行将被终止。当保留为 null 时,作业将继续执行其所有索引,并用Complete Job 条件标记。它只能在 backoffLimitPerIndex 设置时指定。它可以为 null 或最多为 completions。当 completions 大于 10^5 时,它必须且必须小于或等于 10^4。此字段处于 Alpha 级。当JobBackoffLimitPerIndex 特性门启用时(默认情况下禁用),可以使用它。

  • podReplacementPolicy (string)

    podReplacementPolicy 指定何时创建替换 Pod。可能的值为:- TerminatingOrFailed 表示当 Pod 正在终止(具有 metadata.deletionTimestamp)或失败时,我们会重新创建 Pod。

    • Failed 表示在创建替换 Pod 之前,等待先前创建的 Pod 完全终止(具有阶段 Failed 或 Succeeded)。

    当使用 podFailurePolicy 时,Failed 是唯一允许的值。当不使用 podFailurePolicy 时,TerminatingOrFailed 和 Failed 是允许的值。这是一个 Alpha 字段。启用 JobPodReplacementPolicy 才能使用此字段。

JobStatus

JobStatus 表示 Job 的当前状态。


  • startTime (Time)

    表示作业控制器开始处理作业的时间。当作业在挂起状态下创建时,此字段在首次恢复之前不会设置。每次作业从挂起状态恢复时,此字段都会重置。它以 RFC3339 形式表示,并且为 UTC。

    Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。为时间包提供的许多工厂方法提供了包装器。

  • completionTime (Time)

    表示作业完成的时间。不保证在不同操作之间按时序发生。它以 RFC3339 形式表示,并且为 UTC。完成时间仅在作业成功完成时设置。

    Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。为时间包提供的许多工厂方法提供了包装器。

  • active (int32)

    正在挂起和运行的 pod 数量。

  • failed (int32)

    达到阶段 Failed 的 pod 数量。

  • succeeded (int32)

    达到阶段 Succeeded 的 pod 数量。

  • completedIndexes (string)

    completedIndexes 在 .spec.completionMode = "Indexed" 中以文本格式保存已完成的索引。索引表示为用逗号分隔的十进制整数。这些数字按升序排列。三个或更多个连续数字被压缩,并由该序列的第一个和最后一个元素表示,用连字符分隔。例如,如果已完成的索引为 1、3、4、5 和 7,则它们表示为 "1,3-5,7"。

  • conditions ([]JobCondition)

    补丁策略:按键type 合并

    原子:在合并期间将被替换

    对象当前状态的最新可用观察结果。当作业失败时,其中一个条件的类型将为“Failed”,状态为 true。当作业挂起时,其中一个条件的类型将为“Suspended”,状态为 true;当作业恢复时,此条件的状态将变为 false。当作业完成时,其中一个条件的类型将为“Complete”,状态为 true。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/controllers/jobs-run-to-completion/

    JobCondition 描述作业的当前状态。

    • conditions.status (string),必需

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

    • conditions.type (string),必需

      作业条件的类型,为 Complete 或 Failed。

    • conditions.lastProbeTime (Time)

      上次检查条件的时间。

      Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。为时间包提供的许多工厂方法提供了包装器。

    • conditions.lastTransitionTime (Time)

      条件从一种状态过渡到另一种状态的最后时间。

      Time 是 time.Time 的包装器,它支持对 YAML 和 JSON 的正确编组。为时间包提供的许多工厂方法提供了包装器。

    • conditions.message (string)

      指示上次过渡详细信息的人类可读消息。

    • conditions.reason (string)

      (简要)条件上次过渡的原因。

  • uncountedTerminatedPods (UncountedTerminatedPods)

    uncountedTerminatedPods 保存已终止但作业控制器尚未在状态计数器中统计的 Pod 的 UID。

    作业控制器使用最终器创建 Pod。当 Pod 终止(成功或失败)时,控制器执行三个步骤来在作业状态中对其进行统计

    1. 将 Pod UID 添加到此字段中的数组中。2. 移除 Pod 最终器。3. 从数组中移除 Pod UID,同时增加相应的计数器。

    旧作业可能不会使用此字段进行跟踪,在这种情况下,该字段将保持为 null。

    UncountedTerminatedPods 保存已终止但未在 Job 状态计数器中统计的 Pod 的 UID。

    • uncountedTerminatedPods.failed ([]string)

      集:合并期间将保留唯一值

      failed 保存失败的 Pod 的 UID。

    • uncountedTerminatedPods.succeeded ([]string)

      集:合并期间将保留唯一值

      succeeded 保存成功的 Pod 的 UID。

Beta 级别

  • ready (int32)

    具有 Ready 条件的 pod 数量。

    此字段处于 Beta 级。当 JobReadyPods 特性门启用时(默认情况下启用),作业控制器会填充该字段。

Alpha 级

  • failedIndexes (string)

    当 backoffLimitPerIndex=true 时,FailedIndexes 保存失败的索引。索引以与completedIndexes 字段类似的文本格式表示,即它们以用逗号分隔的十进制整数形式保存。这些数字按升序排列。三个或更多个连续数字被压缩,并由该序列的第一个和最后一个元素表示,用连字符分隔。例如,如果失败的索引为 1、3、4、5 和 7,则它们表示为 "1,3-5,7"。此字段处于 Alpha 级。当JobBackoffLimitPerIndex 特性门启用时(默认情况下禁用),可以使用它。

  • terminating (int32)

    正在终止的 pod 数量(处于阶段 Pending 或 Running 且具有 deletionTimestamp)。

    此字段处于 Alpha 级。当 JobPodReplacementPolicy 特性门启用时(默认情况下禁用),作业控制器会填充该字段。

JobList

JobList 是作业的集合。


操作


get 读取指定的 Job

HTTP 请求

GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}

参数

  • name (在路径中):string,必需

    Job 的名称

  • namespace (在路径中):string,必需

    命名空间

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

401: 未经授权

get 读取指定 Job 的状态

HTTP 请求

GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

参数

  • name (在路径中):string,必需

    Job 的名称

  • namespace (在路径中):string,必需

    命名空间

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

401: 未经授权

list 列出或观察 Job 类型的对象

HTTP 请求

GET /apis/batch/v1/namespaces/{namespace}/jobs

参数

响应

200 (JobList): OK

401: 未经授权

list 列出或观察 Job 类型的对象

HTTP 请求

GET /apis/batch/v1/jobs

参数

响应

200 (JobList): OK

401: 未经授权

create 创建 Job

HTTP 请求

POST /apis/batch/v1/namespaces/{namespace}/jobs

参数

响应

200 (Job): OK

201 (Job): 已创建

202 (Job): 已接受

401: 未经授权

update 替换指定的 Job

HTTP 请求

PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}

参数

  • name (在路径中):string,必需

    Job 的名称

  • namespace (在路径中):string,必需

    命名空间

  • body: Job,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

201 (Job): 已创建

401: 未经授权

update 替换指定 Job 的状态

HTTP 请求

PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

参数

  • name (在路径中):string,必需

    Job 的名称

  • namespace (在路径中):string,必需

    命名空间

  • body: Job,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

201 (Job): 已创建

401: 未经授权

patch 部分更新指定的 Job

HTTP 请求

PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}

参数

  • name (在路径中):string,必需

    Job 的名称

  • namespace (在路径中):string,必需

    命名空间

  • body: Patch,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • force (在查询中):boolean

    force

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

201 (Job): 已创建

401: 未经授权

patch 部分更新指定 Job 的状态

HTTP 请求

PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status

参数

  • name (在路径中):string,必需

    Job 的名称

  • namespace (在路径中):string,必需

    命名空间

  • body: Patch,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • force (在查询中):boolean

    force

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

201 (Job): 已创建

401: 未经授权

delete 删除 Job

HTTP 请求

DELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name}

参数

响应

200 (Status): OK

202 (Status): 已接受

401: 未经授权

deletecollection 删除 Job 的集合

HTTP 请求

DELETE /apis/batch/v1/namespaces/{namespace}/jobs

参数

响应

200 (Status): OK

401: 未经授权

此页面是自动生成的。

如果您打算报告此页面上的问题,请在问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

上次修改时间:2023 年 7 月 26 日下午 1:45 PST:生成内容 (1e2ed88743)