diff --git a/content/zh-cn/docs/reference/kubernetes-api/workload-resources/job-v1.md b/content/zh-cn/docs/reference/kubernetes-api/workload-resources/job-v1.md index e13f9909be..3bc7f54a26 100644 --- a/content/zh-cn/docs/reference/kubernetes-api/workload-resources/job-v1.md +++ b/content/zh-cn/docs/reference/kubernetes-api/workload-resources/job-v1.md @@ -4,7 +4,7 @@ apiVersion: "batch/v1" import: "k8s.io/api/batch/v1" kind: "Job" content_type: "api_reference" -description: "Job 表示单个作业的配置。" +description: "Job 表示单个任务的配置。" title: "Job" weight: 9 --- @@ -30,13 +30,12 @@ auto_generated: true -Job 表示单个作业的配置。 +Job 表示单个任务的配置。
- **apiVersion**: batch/v1 - - **kind**: Job - **spec** (}}">JobSpec) - 作业的预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + 任务的预期行为的规约。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - **status** (}}">JobStatus) - 作业的当前状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + 任务的当前状态。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status ## JobSpec {#JobSpec} @@ -72,13 +71,12 @@ Job 表示单个作业的配置。 -JobSpec 描述了作业执行的情况。 +JobSpec 描述了任务执行的情况。
### Replicas - - **template** (}}">PodTemplateSpec), 必需 - 描述执行作业时将创建的 Pod。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + 描述执行任务时将创建的 Pod。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ - **parallelism** (int32) - 指定作业应在任何给定时刻预期运行的 Pod 个数上限。 + 指定任务应在任何给定时刻预期运行的 Pod 个数上限。 当(.spec.completions - .status.successful) \< .spec.parallelism 时, 即当剩余的工作小于最大并行度时,在稳定状态下运行的 Pod 的实际数量将小于此数量。 更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ ### Lifecycle - - **completions** (int32) - 指定作业应该运行并预期成功完成的 Pod 个数。设置为 nil 意味着任何 Pod 的成功都标识着所有 Pod 的成功, - 并允许 parallelism 设置为任何正值。设置为 1 意味着并行性被限制为 1,并且该 Pod 的成功标志着作业的成功。更多信息: + 指定任务应该运行并预期成功完成的 Pod 个数。设置为 nil 意味着任何 Pod 的成功都标识着所有 Pod 的成功, + 并允许 parallelism 设置为任何正值。设置为 1 意味着并行性被限制为 1,并且该 Pod 的成功标志着任务的成功。更多信息: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ + `Indexed` 意味着 Job 的各个 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)` 的形式。 + "batch.kubernetes.io/job-completion-index" 中找到。当每个索引都对应有一个成功完成的 Pod 时, + 该任务被认为是完成的。 + 当值为 `Indexed` 时,必须指定 `.spec.completions` 并且 `.spec.parallelism` 必须小于或等于 10^5。 + 此外,Pod 名称采用 `$(job-name)-$(index)-$(random-string)` 的形式,Pod 主机名采用 + `$(job-name)-$(index)` 的形式。 + 将来可能添加更多的完成模式。如果 Job 控制器发现它无法识别的模式 (这种情况在升级期间由于版本偏差可能发生),则控制器会跳过 Job 的更新。 @@ -153,13 +152,13 @@ JobSpec 描述了作业执行的情况。 --> - **backoffLimit** (int32) - 指定标记此作业失败之前的重试次数。默认值为 6。 + 指定标记此任务失败之前的重试次数。默认值为 6。 - **activeDeadlineSeconds** (int64) - 系统尝试终止作业之前作业可以持续活跃的持续时间(秒),时间长度是相对于 startTime 的; - 字段值必须为正整数。如果作业被挂起(在创建期间或因更新而挂起), - 则当作业再次恢复时,此计时器会被停止并重置。 + 系统尝试终止任务之前任务可以持续活跃的持续时间(秒),时间长度是相对于 startTime 的; + 字段值必须为正整数。如果任务被挂起(在创建期间或因更新而挂起), + 则当任务再次恢复时,此计时器会被停止并重置。 - **ttlSecondsAfterFinished** (int32) - ttlSecondsAfterFinished 限制已完成执行(完成或失败)的作业的生命周期。如果设置了这个字段, + ttlSecondsAfterFinished 限制已完成执行(完成或失败)的任务的生命周期。如果设置了这个字段, 在 Job 完成 ttlSecondsAfterFinished 秒之后,就可以被自动删除。 当 Job 被删除时,它的生命周期保证(例如终结器)会被考察。 - 如果未设置此字段,则作业不会被自动删除。如果此字段设置为零,则作业在完成后即可立即删除。 + 如果未设置此字段,则任务不会被自动删除。如果此字段设置为零,则任务在完成后即可立即删除。 +### Alpha 级别 + +- **podFailurePolicy** (PodFailurePolicy) + + 指定处理失效 Pod 的策略。特别是,它允许指定采取关联操作需要满足的一组操作和状况。 + 如果为空,则应用默认行为:由该任务的 .status.failed 字段表示的失效 Pod 的计数器将递增, + 并针对 backoffLimit 进行检查。此字段不能与 restartPolicy=OnFailure 结合使用。 + + + + 此字段是 Alpha 级别。要使用此字段,你必须启用 `JobPodFailurePolicy` 特性门控(默认被禁用)。 + + + **PodFailurePolicy 描述失效的 Pod 如何影响 backoffLimit。** + + + + - **podFailurePolicy.rules** ([]PodFailurePolicyRule),必需 + + **原子: 将在合并期间被替换** + + Pod 失效策略规则的列表。这些规则按顺序进行评估。一旦某规则匹配 Pod 失效,则其余规将被忽略。 + 当没有规则匹配 Pod 失效时,将应用默认的处理方式: + Pod 失效的计数器递增并针对 backoffLimit 进行检查。最多允许 20 个。 + + + + + **PodFailurePolicyRule 描述当满足要求时如何处理一个 Pod 失效。 + 在每个规则中可以使用 OnExitCodes 和 onPodConditions 之一,但不能同时使用二者。** + + + + - **podFailurePolicy.rules.action** (string),必需 + + 指定当要求满足时对 Pod 失效采取的操作。可能的值是: + + - FailJob:表示 Pod 的任务被标记为 Failed 且所有正在运行的 Pod 都被终止。 + + + + - 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 的要求。 + 特别是,它为每个应用容器和 Init 容器状态查找在 Pod 状态中分别用 .status.containerStatuses 和 + .status.initContainerStatuses 字段表示的 .state.terminated.exitCode。 + 成功完成的容器(退出码 0)被排除在此要求检查之外。** + + + + - **podFailurePolicy.rules.onExitCodes.operator** (string),必需 + + 表示容器退出码和指定值之间的关系。成功完成的容器(退出码 0)被排除在此要求检查之外。可能的值为: + + - In:如果至少一个容器退出码(如果有多个容器不受 'containerName' 字段限制,则可能是多个退出码) + 在一组指定值中,则满足要求。 + + - NotIn:如果至少一个容器退出码(如果有多个容器不受 'containerName' 字段限制,则可能是多个退出码) + 不在一组指定值中,则满足要求。 + + 后续会考虑增加其他值。客户端应通过假设不满足要求来对未知操作符做出反应。 + + + + - **podFailurePolicy.rules.onExitCodes.values** ([]int32),必需 + + **集合:合并期间保留唯一值** + + 指定值集。每个返回的容器退出码(在多个容器的情况下可能是多个)将根据该操作符有关的这个值集进行检查。 + 值的列表必须有序且不得包含重复项。值 '0' 不能用于 In 操作符。至少需要 1 个。最多允许 255 个。 + + + + - **podFailurePolicy.rules.onExitCodes.containerName** (string) + + 将退出码的检查限制为具有指定名称的容器。当为 null 时,该规则适用于所有容器。 + 当被指定时,它应与 Pod 模板中的容器名称或 initContainer 名称之一匹配。 + +## JobStatus {#JobStatus} - **startTime** (Time) - 表示作业控制器开始处理作业的时间。在挂起状态下创建 Job 时,直到第一次恢复时才会设置此字段。 - 每次从暂停中恢复作业时都会重置此字段。它表示为 RFC3339 格式的 UTC 时间。 - + 表示任务控制器开始处理任务的时间。在挂起状态下创建 Job 时,直到第一次恢复时才会设置此字段。 + 每次从暂停中恢复任务时都会重置此字段。它表示为 RFC3339 格式的 UTC 时间。 **Time 是 time.Time 的包装器,支持正确编码为 YAML 和 JSON。time 包提供的许多工厂方法都提供了包装器。** @@ -247,8 +432,8 @@ JobStatus 表示 Job 的当前状态。 --> - **completionTime** (Time) - 表示作业完成的时间。不能保证对多个独立操作按发生的先后顺序设置。此字段表示为 RFC3339 格式的 UTC 时间。 - 仅当作业成功完成时才设置完成时间。 + 表示任务完成的时间。不能保证对多个独立操作按发生的先后顺序设置。此字段表示为 RFC3339 格式的 UTC 时间。 + 仅当任务成功完成时才设置完成时间。 **Time 是 time.Time 的包装器,支持正确编码为 YAML 和 JSON。time 包提供的许多工厂方法都提供了包装器。** @@ -303,15 +488,15 @@ JobStatus 表示 Job 的当前状态。 **补丁策略:根据 `type` 键合并** - **原子:在合并过程中,将被替换。** + **原子: 将在合并期间被替换** - 对象当前状态的最新可用观察结果。当作业失败时,其中一个状况的类型为 “Failed”,状态为 true。 - 当作业被暂停时,其中一个状况的类型为 “Suspended”,状态为true;当作业被恢复时,该状况的状态将变为 false。 - 作业完成时,其中一个状况的类型为 "Complete",状态为 true。更多信息: + 对象当前状态的最新可用观察结果。当任务失败时,其中一个状况的类型为 “Failed”,状态为 true。 + 当任务被暂停时,其中一个状况的类型为 “Suspended”,状态为true;当任务被恢复时,该状况的状态将变为 false。 + 任务完成时,其中一个状况的类型为 "Complete",状态为 true。更多信息: https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/jobs-run-to-completion/ - **JobCondition 描述作业的当前状况。** + **JobCondition 描述任务的当前状况。** - 此字段为 Beta 级别。作业控制器仅在启用特性门控 JobTrackingWithFinalizers 时使用此字段(默认启用)。 - 使用此字段可能无法跟踪旧作业,在这种情况下,该字段保持为空。 + 此字段为 Beta 级别。任务控制器仅在启用特性门控 JobTrackingWithFinalizers 时使用此字段(默认启用)。 + 使用此字段可能无法跟踪旧任务,在这种情况下,该字段保持为空。 **UncountedTerminatedPods 持有已经终止的 Pod 的 UID,但还没有被计入工作状态计数器中。** @@ -419,7 +604,7 @@ JobStatus 表示 Job 的当前状态。 - **uncountedTerminatedPods.failed** ([]string) - **Set: 在合并过程中,唯一的值将被保留** + **集合:合并期间保留唯一值** failed 字段包含已失败 Pod 的 UID。 @@ -433,16 +618,14 @@ JobStatus 表示 Job 的当前状态。 - **uncountedTerminatedPods.succeeded** ([]string) - **Set: 在合并过程中,唯一的值将被保留** + **集合:合并期间保留唯一值** succeeded 包含已成功的 Pod 的 UID。 - - -### Alpha 级别 +### Beta 级别 #### 响应 - 200 (}}">Job): OK 401: Unauthorized @@ -651,7 +819,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">allowWatchBookmarks - - **continue** (*in query*): string }}">continue @@ -661,7 +828,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">allowWatchBookmarks - - **continue** (**查询参数**): string }}">continue @@ -671,7 +837,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">fieldSelector - - **labelSelector** (*in query*): string }}">labelSelector @@ -681,7 +846,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">fieldSelector - - **labelSelector** (**查询参数**): string }}">labelSelector @@ -691,7 +855,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">limit - - **pretty** (*in query*): string }}">pretty @@ -701,7 +864,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">limit - - **pretty** (**查询参数**): string }}">pretty @@ -711,7 +873,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">resourceVersion - - **resourceVersionMatch** (*in query*): string }}">resourceVersionMatch @@ -721,7 +882,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">resourceVersion - - **resourceVersionMatch** (**查询参数**): string }}">resourceVersionMatch @@ -731,7 +891,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">timeoutSeconds - - **watch** (*in query*): boolean }}">watch @@ -741,7 +900,6 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs }}">timeoutSeconds - - **watch** (**查询参数**): boolean }}">watch @@ -749,12 +907,10 @@ GET /apis/batch/v1/namespaces/{namespace}/jobs #### 响应 @@ -916,12 +1058,10 @@ POST /apis/batch/v1/namespaces/{namespace}/jobs #### 参数 - - **namespace** (**路径参数**): string, 必需 }}">namespace - - **body**: }}">Job, 必需 #### 响应 - 200 (}}">Job): OK 201 (}}">Job): Created @@ -996,7 +1129,6 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name} 401: Unauthorized - ### `update` 替换指定的 Job #### HTTP 请求 @@ -1010,12 +1142,10 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name} name of the Job - - **namespace** (*in path*): string, required }}">namespace - - **body**: }}">Job, required --> @@ -1023,12 +1153,10 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name} Job 的名称。 - - **namespace** (**路径参数**): string, 必需 }}">namespace - - **body**: }}">Job, 必需 #### 响应 - 200 (}}">Job): OK 201 (}}">Job): Created 401: Unauthorized - ### `update` 替换指定 Job 的状态 #### HTTP 请求 @@ -1114,25 +1233,21 @@ PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status name of the Job - - **namespace** (*in path*): string, required }}">namespace - - **body**: }}">Job, required --> - **name** (**路径参数**): string, 必需 - Job 的名字 - + Job 的名称。 - **namespace** (**路径参数**): string, 必需 }}">namespace - - **body**: }}">Job, 必需 #### 响应 - 200 (}}">Job): OK 201 (}}">Job): Created 401: Unauthorized - ### `patch` 部分更新指定的 Job #### HTTP 请求 @@ -1211,32 +1318,26 @@ PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name} #### 参数 - - **name** (**路径参数**): string, 必需 Job 的名称。 - - **namespace** (**路径参数**): string, 必需 }}">namespace - - **body**: }}">Patch, 必需 @@ -1342,12 +1435,10 @@ PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status Job 的名称。 - - **namespace** (**路径参数**): string, 必需 }}">namespace - - **body**: }}">Patch, 必需 #### 响应 - 200 (}}">Job): OK 201 (}}">Job): Created 401: Unauthorized - ### `delete` 删除一个 Job #### HTTP 请求 @@ -1444,17 +1526,14 @@ DELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name} #### 参数 - - **name** (**路径参数**): string, 必需 - Job的名称 - + Job 的名称。 - **namespace** (**路径参数**): string, 必需 }}">namespace - - **body**: }}">DeleteOptions #### 响应 @@ -1539,7 +1611,6 @@ DELETE /apis/batch/v1/namespaces/{namespace}/jobs }}">namespace - - **body**: }}">DeleteOptions