作业

Job 代表单个作业的配置。

apiVersion: batch/v1

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

作业

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 完成都与其他 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),必需

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

          指定值的集合。每个返回的容器退出代码(如果有多个容器,则可能有多个)都将根据操作符针对此值集进行检查。值的列表必须按顺序排列,并且不能包含重复项。对于 In 操作符,不能使用值 '0'。至少需要一个元素。最多允许 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)

    当设置 backoffLimitPerIndex 时,指定在将 Job 标记为失败之前,失败索引的最大数量。一旦失败索引的数量超过此数量,整个 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 完全终止(处于 phase Failed 或 Succeeded 状态)。

    当使用 podFailurePolicy 时,Failed 是唯一允许的值。当没有使用 podFailurePolicy 时,TerminatingOrFailed 和 Failed 是允许的值。这是一个 alpha 字段。启用 JobPodReplacementPolicy 以能够使用此字段。

JobStatus

JobStatus 表示 Job 的当前状态。


  • startTime (Time)

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

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

  • completionTime (Time)

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

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

  • active (int32)

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

  • failed (int32)

    达到 phase Failed 的 Pod 的数量。

  • succeeded (int32)

    达到 phase 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 的正确编组。包装器为 time 包提供的许多工厂方法提供。

    • conditions.lastTransitionTime (Time)

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

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

    • conditions.message (string)

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

    • conditions.reason (string)

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

  • uncountedTerminatedPods (UncountedTerminatedPods)

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

    作业控制器使用最终器创建 Pod。当 Pod 终止(成功或失败)时,控制器将执行三个步骤来在作业状态中考虑它

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

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

    UncountedTerminatedPods 保存已终止但尚未在作业状态计数器中考虑的 Pod 的 UID。

    • uncountedTerminatedPods.failed ([]string)

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

      failed 保存失败 Pod 的 UID。

    • uncountedTerminatedPods.succeeded ([]string)

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

      succeeded 保存成功 Pod 的 UID。

Beta 级

  • ready (int32)

    具有 Ready 条件的 Pod 的数量。

    此字段为 beta 级。当 JobReadyPods 功能门打开时(默认情况下打开),作业控制器将填充该字段。

Alpha 级

  • failedIndexes (string)

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

  • terminating (int32)

    正在终止的 Pod 的数量(处于 phase 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,必需

    命名空间

  • 主体: 补丁,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • force (在查询中): 布尔值

    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,必需

    命名空间

  • 主体: 补丁,必需

  • dryRun (在查询中):string

    dryRun

  • fieldManager (在查询中):string

    fieldManager

  • fieldValidation (在查询中):string

    fieldValidation

  • force (在查询中): 布尔值

    force

  • pretty (在查询中):string

    pretty

响应

200 (Job): OK

201 (Job): 已创建

401: 未经授权

delete 删除一个 Job

HTTP 请求

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

参数

响应

200 (状态): 正常

202 (状态): 已接受

401: 未经授权

deletecollection 删除 Job 集合

HTTP 请求

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

参数

响应

200 (状态): 正常

401: 未经授权

此页面是自动生成的。

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

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