Job
apiVersion: batch/v1
import "k8s.io/api/batch/v1"
Job
Job 代表单个作业的配置。
apiVersion: batch/v1
kind: Job
metadata (ObjectMeta)
标准对象的元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (JobSpec)
作业所需行为的规范。更多信息: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
JobSpec
JobSpec 描述作业执行将是什么样子。
副本
template (PodTemplateSpec), 必需
描述执行作业时将创建的 Pod。允许的唯一 template.spec.restartPolicy 值为“Never”或“OnFailure”。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/controllers/jobs-run-to-completion/
parallelism (int32)
指定作业在任何给定时间应运行的最大 Pod 数。当 ((.spec.completions - .status.successful) < .spec.parallelism) 时,即当剩余工作量小于最大并行度时,稳定状态下运行的 Pod 数量将少于此数量。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/controllers/jobs-run-to-completion/
生命周期
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。
选择器
selector (LabelSelector)
对应该匹配 Pod 计数的 Pod 的标签查询。通常,系统会为您设置此字段。更多信息:https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/labels/#label-selectors
manualSelector (boolean)
manualSelector 控制 Pod 标签和 Pod 选择器的生成。除非您确定自己在做什么,否则不要设置
manualSelector
。当为 false 或未设置时,系统会选择特定于此作业的标签,并将这些标签附加到 Pod 模板。当为 true 时,用户负责选择唯一的标签并指定选择器。未能选择唯一的标签可能会导致此作业和其他作业无法正常运行。但是,您可能会在使用旧的extensions/v1beta1
API 创建的作业中看到manualSelector=true
。更多信息:https://kubernetes.ac.cn/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
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/
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 终止(成功或失败)时,控制器执行三个步骤来在作业状态中对其进行统计
- 将 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 是作业的集合。
apiVersion: batch/v1
kind: JobList
metadata (ListMeta)
标准列表元数据。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]Job),必需
items 是 Job 的列表。
操作
get
读取指定的 Job
HTTP 请求
GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}
参数
响应
200 (Job): OK
401: 未经授权
get
读取指定 Job 的状态
HTTP 请求
GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
参数
响应
200 (Job): OK
401: 未经授权
list
列出或观察 Job 类型的对象
HTTP 请求
GET /apis/batch/v1/namespaces/{namespace}/jobs
参数
namespace (在路径中):string,必需
allowWatchBookmarks (在查询中):boolean
continue (在查询中):string
fieldSelector (在查询中):string
labelSelector (在查询中):string
limit (在查询中):integer
pretty (在查询中):string
resourceVersion (在查询中):string
resourceVersionMatch (在查询中):string
sendInitialEvents (在查询中):boolean
timeoutSeconds (在查询中):integer
watch (在查询中):boolean
响应
200 (JobList): OK
401: 未经授权
list
列出或观察 Job 类型的对象
HTTP 请求
GET /apis/batch/v1/jobs
参数
allowWatchBookmarks (在查询中):boolean
continue (在查询中):string
fieldSelector (在查询中):string
labelSelector (在查询中):string
limit (在查询中):integer
pretty (在查询中):string
resourceVersion (在查询中):string
resourceVersionMatch (在查询中):string
sendInitialEvents (在查询中):boolean
timeoutSeconds (在查询中):integer
watch (在查询中):boolean
响应
200 (JobList): OK
401: 未经授权
create
创建 Job
HTTP 请求
POST /apis/batch/v1/namespaces/{namespace}/jobs
参数
namespace (在路径中):string,必需
body: Job,必需
dryRun (在查询中):string
fieldManager (在查询中):string
fieldValidation (在查询中):string
pretty (在查询中):string
响应
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
fieldManager (在查询中):string
fieldValidation (在查询中):string
pretty (在查询中):string
响应
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
fieldManager (在查询中):string
fieldValidation (在查询中):string
pretty (在查询中):string
响应
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
fieldManager (在查询中):string
fieldValidation (在查询中):string
force (在查询中):boolean
pretty (在查询中):string
响应
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
fieldManager (在查询中):string
fieldValidation (在查询中):string
force (在查询中):boolean
pretty (在查询中):string
响应
200 (Job): OK
201 (Job): 已创建
401: 未经授权
delete
删除 Job
HTTP 请求
DELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name}
参数
name (在路径中):string,必需
Job 的名称
namespace (在路径中):string,必需
body: DeleteOptions
dryRun (在查询中):string
gracePeriodSeconds (在查询中):integer
pretty (在查询中):string
propagationPolicy (在查询中):string
响应
200 (Status): OK
202 (Status): 已接受
401: 未经授权
deletecollection
删除 Job 的集合
HTTP 请求
DELETE /apis/batch/v1/namespaces/{namespace}/jobs
参数
namespace (在路径中):string,必需
body: DeleteOptions
continue (在查询中):string
dryRun (在查询中):string
fieldSelector (在查询中):string
gracePeriodSeconds (在查询中):integer
labelSelector (在查询中):string
limit (在查询中):integer
pretty (在查询中):string
propagationPolicy (在查询中):string
resourceVersion (在查询中):string
resourceVersionMatch (在查询中):string
sendInitialEvents (在查询中):boolean
timeoutSeconds (在查询中):integer
响应
200 (Status): OK
401: 未经授权
此页面是自动生成的。
如果您打算报告此页面上的问题,请在问题描述中提及该页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。