Job

Job 代表單一 Job 的組態。

apiVersion: batch/v1

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

Job

Job 代表單一 Job 的組態。


JobSpec

JobSpec 描述 Job 執行時的外觀。


副本

生命週期

  • **completions** (int32)

    指定 Job 應運行的成功完成 Pod 的期望數量。 設定為 null 表示任何 Pod 的成功都表示所有 Pod 的成功,並允許平行度具有任何正值。 設定為 1 表示平行度限制為 1,並且該 Pod 的成功表示 Job 的成功。 更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/controllers/jobs-run-to-completion/

  • **completionMode** (string)

    completionMode 指定如何追蹤 Pod 完成。它可以是 NonIndexed (預設) 或 Indexed

    NonIndexed 表示當有 .spec.completions 個 Pod 成功完成時,Job 被視為已完成。每個 Pod 完成彼此同源。

    Indexed 表示 Job 的 Pod 從 0 到 (.spec.completions - 1) 取得相關聯的完成索引,在註解 batch.kubernetes.io/job-completion-index 中可用。當每個索引都有一個成功完成的 Pod 時,Job 被視為已完成。當值為 Indexed 時,必須指定 .spec.completions 且 .spec.parallelism 必須小於或等於 10^5。此外,Pod 名稱採用 $(job-name)-$(index)-$(random-string) 形式,Pod 主機名稱採用 $(job-name)-$(index) 形式。

    未來可以新增更多完成模式。如果 Job 控制器觀察到它無法識別的模式(在升級期間由於版本偏差而可能發生),則控制器會跳過 Job 的更新。

  • **backoffLimit** (int32)

    指定在將此 Job 標記為失敗之前的重試次數。預設為 6

  • **activeDeadlineSeconds** (int64)

    指定相對於 startTime 的持續時間(以秒為單位),Job 在系統嘗試終止它之前可以持續活動的時間;值必須為正整數。如果 Job 被暫停(在建立時或透過更新),則當 Job 再次恢復時,此計時器將有效地停止並重置。

  • **ttlSecondsAfterFinished** (int32)

    ttlSecondsAfterFinished 限制已完成執行的 Job (Complete 或 Failed) 的生命週期。如果設定此欄位,則在 Job 完成後 ttlSecondsAfterFinished 秒,它就有資格自動刪除。當 Job 正在刪除時,將遵守其生命週期保證(例如 finalizer)。如果未設定此欄位,則 Job 不會自動刪除。如果此欄位設定為零,則 Job 在完成後立即有資格被刪除。

  • **suspend** (boolean)

    suspend 指定 Job 控制器是否應建立 Pod。如果建立 Job 時 suspend 設定為 true,則 Job 控制器不會建立 Pod。如果在建立後暫停 Job(即標誌從 false 變為 true),則 Job 控制器將刪除與此 Job 相關聯的所有活動 Pod。使用者必須設計其工作負載以優雅地處理此情況。暫停 Job 將重置 Job 的 StartTime 欄位,從而有效地重置 ActiveDeadlineSeconds 計時器。預設為 false。

選取器

Beta 級別

  • podFailurePolicy (PodFailurePolicy)

    指定處理失敗 Pod 的策略。特別是,它允許指定需要滿足的一組動作和條件,以採取相關的動作。如果為空,則應用預設行為 - 失敗 Pod 的計數器(由 Job 的 .status.failed 欄位表示)會遞增,並針對 backoffLimit 進行檢查。此欄位不能與 restartPolicy=OnFailure 組合使用。

    PodFailurePolicy 描述失敗的 Pod 如何影響 backoffLimit。

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

      Atomic: 將在合併期間被取代

      Pod 失敗策略規則的列表。這些規則依序評估。一旦規則符合 Pod 失敗,則忽略其餘規則。當沒有規則符合 Pod 失敗時,則應用預設處理方式 - Pod 失敗的計數器會遞增,並針對 backoffLimit 進行檢查。最多允許 20 個元素。

      PodFailurePolicyRule 描述當滿足需求時,如何處理 Pod 失敗。每個規則中可以使用 onExitCodes 和 onPodConditions 其中之一,但不能同時使用兩者。

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

        指定在滿足需求時,針對 Pod 失敗所採取的動作。可能的值為

        • FailJob:表示 Pod 的 Job 被標記為失敗,並且所有正在執行的 Pod 都會被終止。
        • FailIndex:表示 Pod 的索引被標記為失敗,並且不會重新啟動。此值為 Beta 級別。當啟用 JobBackoffLimitPerIndex 功能閘道(預設啟用)時,可以使用此值。
        • Ignore:表示不會遞增朝向 .backoffLimit 的計數器,並且會建立替換 Pod。
        • Count:表示 Pod 以預設方式處理 - 朝向 .backoffLimit 的計數器會遞增。未來會考慮新增其他值。用戶端應透過略過規則來回應未知的動作。
      • 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: 在合併期間將保留唯一值

          指定值集。每個傳回的容器結束代碼(在多個容器的情況下可能有多個)都會根據運算符針對此值集進行檢查。值列表必須排序,且不得包含重複項。值 '0' 不能用於 In 運算符。至少需要一個元素。最多允許 255 個元素。

        • podFailurePolicy.rules.onExitCodes.containerName (string)

          將結束代碼的檢查限制為具有指定名稱的容器。當為 null 時,規則適用於所有容器。當指定時,它應符合 Pod 範本中的容器或 initContainer 名稱之一。

      • podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern)

        Atomic: 將在合併期間被取代

        表示 Pod 條件的需求。需求表示為 Pod 條件模式的列表。如果至少一個模式符合實際的 Pod 條件,則滿足需求。最多允許 20 個元素。

        PodFailurePolicyOnPodConditionsPattern 描述用於比對實際 Pod 條件類型的模式。

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

          指定所需的 Pod 條件狀態。為了符合 Pod 條件,需要指定的狀態等於 Pod 條件狀態。預設值為 True。

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

          指定所需的 Pod 條件類型。為了符合 Pod 條件,需要指定的類型等於 Pod 條件類型。

  • successPolicy (SuccessPolicy)

    successPolicy 指定 Job 何時可以宣告為成功的策略。如果為空,則應用預設行為 - 僅當成功 Pod 的數量等於 completions 時,Job 才宣告為成功。當指定此欄位時,它必須是不可變的,並且僅適用於 Indexed Job。一旦 Job 滿足 SuccessPolicy,就會終止持續存在的 Pod。

    此欄位為 Beta 級別。若要使用此欄位,您必須啟用 JobSuccessPolicy 功能閘道(預設啟用)。

    SuccessPolicy 描述何時可以基於某些索引的成功將 Job 宣告為成功。

    • successPolicy.rules ([]SuccessPolicyRule), 必須

      Atomic: 將在合併期間被取代

      rules 代表在 .status.succeeded >= .spec.completions 之前宣告 Job 成功的替代規則列表。一旦滿足任何規則,就會新增 "SucceededCriteriaMet" 條件,並且移除持續存在的 Pod。此類 Job 的終止狀態具有 "Complete" 條件。此外,這些規則依序評估;一旦 Job 滿足其中一個規則,則忽略其他規則。最多允許 20 個元素。

      SuccessPolicyRule 描述宣告 Job 成功的規則。每個規則必須至少指定 "succeededIndexes" 或 "succeededCount" 其中之一。

      • successPolicy.rules.succeededCount (int32)

        succeededCount 指定 Job 的實際成功索引集所需的最小大小。當 succeededCount 與 succeededIndexes 一起使用時,檢查僅限於 succeededIndexes 指定的索引集。例如,假設 succeededIndexes 為 "1-4",succeededCount 為 "3",且已完成索引為 "1"、"3" 和 "5",則 Job 不會宣告為成功,因為在該規則中僅考慮 "1" 和 "3" 索引。當此欄位為 null 時,它不會預設為任何值,並且永遠不會在任何時間評估。當指定時,它必須是正整數。

      • successPolicy.rules.succeededIndexes (string)

        succeededIndexes 指定需要包含在 Job 的實際成功索引集中的索引集。索引列表必須在 0 到 ".spec.completions-1" 範圍內,且不得包含重複項。至少需要一個元素。索引表示為以逗號分隔的間隔。間隔可以是十進制整數或以連字符分隔的一對十進制整數。數字以序列的第一個和最後一個元素表示,以連字符分隔。例如,如果已完成的索引為 1、3、4、5 和 7,則它們表示為 "1,3-5,7"。當此欄位為 null 時,此欄位不會預設為任何值,並且永遠不會在任何時間評估。

Alpha 級別

  • backoffLimitPerIndex (int32)

    指定在將索引標記為失敗之前,索引內重試次數的限制。啟用後,每個索引的失敗次數會保留在 Pod 的 batch.kubernetes.io/job-index-failure-count 注釋中。它只能在 Job 的 completionMode=Indexed 且 Pod 的 restart policy 為 Never 時設定。此欄位為不可變。此欄位為 Beta 級別。當啟用 JobBackoffLimitPerIndex 功能閘道(預設啟用)時,可以使用此欄位。

  • managedBy (string)

    ManagedBy 欄位指示管理 Job 的控制器。k8s Job 控制器協調處理沒有此欄位或欄位值為保留字串 kubernetes.io/job-controller 的 Job,但會略過協調處理此欄位具有自訂值的 Job。該值必須是有效的網域前綴路徑(例如 acme.io/foo) - 第一個 "/" 之前的所有字元必須是有效的子網域,如 RFC 1123 所定義。第一個 "/" 後面的所有字元必須是有效的 HTTP 路徑字元,如 RFC 3986 所定義。該值不能超過 63 個字元。此欄位為不可變。

    此欄位為 Alpha 級別。當啟用 JobManagedBy 功能閘道(預設停用)時,Job 控制器接受設定此欄位。

  • maxFailedIndexes (int32)

    指定在 backoffLimitPerIndex 設定時,將 Job 標記為失敗之前的最大失敗索引數。一旦失敗索引數超過此數字,整個 Job 將被標記為失敗,並且其執行將被終止。當保留為 null 時,Job 會繼續執行其所有索引,並標記為 Complete Job 條件。它只能在設定 backoffLimitPerIndex 時指定。它可以是 null 或最多 completions。當 completions 大於 10^5 時,它是必需的且必須小於或等於 10^4。此欄位為 Beta 級別。當啟用 JobBackoffLimitPerIndex 功能閘道(預設啟用)時,可以使用此欄位。

  • podReplacementPolicy (string)

    podReplacementPolicy 指定何時建立替換 Pod。可能的值為:- TerminatingOrFailed 表示當 Pod 正在終止(具有 metadata.deletionTimestamp)或失敗時,我們會重新建立 Pod。

    • Failed 表示在建立替換 Pod 之前,等待先前建立的 Pod 完全終止(具有 Phase Failed 或 Succeeded)。

    當使用 podFailurePolicy 時,Failed 是唯一允許的值。當未使用 podFailurePolicy 時,允許 TerminatingOrFailed 和 Failed 值。這是一個 Beta 欄位。若要使用此功能,請啟用 JobPodReplacementPolicy 功能切換。預設為啟用。

JobStatus

JobStatus 表示 Job 的當前狀態。


  • startTime (Time)

    表示 Job 控制器開始處理 Job 的時間。當在暫停狀態下建立 Job 時,此欄位在第一次恢復之前不會設定。每次從暫停狀態恢復 Job 時,此欄位都會重設。它以 RFC3339 格式表示,並且為 UTC 時間。

    一旦設定,只有在 Job 暫停時才能移除此欄位。當 Job 處於非暫停或完成狀態時,無法修改此欄位。

    Time 是 time.Time 的封裝器,它支援正確地封送處理為 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了封裝器。

  • completionTime (Time)

    表示 Job 完成的時間。不保證在不同操作之間以先發生順序設定。它以 RFC3339 格式表示,並且為 UTC 時間。完成時間在 Job 成功完成時設定,且僅在此時設定。該值無法更新或移除。該值指示與 startTime 欄位相同或稍晚的時間點。

    Time 是 time.Time 的封裝器,它支援正確地封送處理為 YAML 和 JSON。為 time 套件提供的許多工廠方法提供了封裝器。

  • active (int32)

    未終止(沒有 deletionTimestamp)的待定和執行中 Pod 的數量。對於已完成的 Job,該值為零。

  • failed (int32)

    達到 Phase Failed 的 Pod 數量。該值單調遞增。

  • succeeded (int32)

    達到 Phase Succeeded 的 Pod 數量。對於給定的 spec,該值單調遞增。但是,它可能會因彈性索引 Job 的縮減而減少。

  • completedIndexes (string)

    當 .spec.completionMode = "Indexed" 時,completedIndexes 以文字格式保存已完成的索引。索引表示為以逗號分隔的十進制整數。數字以遞增順序排列。三個或更多連續數字被壓縮並以序列的第一個和最後一個元素表示,以連字符分隔。例如,如果已完成的索引為 1、3、4、5 和 7,則它們表示為 "1,3-5,7"。

  • conditions ([]JobCondition)

    Patch strategy: 在 key type 上合併

    Atomic: 將在合併期間被取代

    物件當前狀態的最新可用觀察結果。當 Job 失敗時,其中一個條件的類型將為 "Failed" 且狀態為 true。當 Job 暫停時,其中一個條件的類型將為 "Suspended" 且狀態為 true;當 Job 恢復時,此條件的狀態將變為 false。當 Job 完成時,其中一個條件的類型將為 "Complete" 且狀態為 true。

    當 Job 處於終止條件("Complete" 或 "Failed")時,則認為 Job 已完成。Job 不能同時具有 "Complete" 和 "Failed" 條件。此外,它不能同時處於 "Complete" 和 "FailureTarget" 條件。 "Complete"、"Failed" 和 "FailureTarget" 條件無法停用。

    更多資訊:https://kubernetes.dev.org.tw/docs/concepts/workloads/controllers/jobs-run-to-completion/

    JobCondition 描述 Job 的當前狀態。

    • conditions.status (string), 必須

      條件的狀態,True、False、Unknown 其中之一。

    • conditions.type (string), 必須

      Job 條件的類型,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 保存已終止但 Job 控制器尚未在狀態計數器中計算的 Pod 的 UID。

    Job 控制器會使用 finalizer 建立 Pod。當 Pod 終止(成功或失敗)時,控制器會執行三個步驟以在 Job 狀態中計算它

    1. 將 Pod UID 新增到此欄位中的陣列。2. 移除 Pod finalizer。3. 從陣列中移除 Pod UID,同時增加對應的計數器。

    舊的 Job 可能不會使用此欄位追蹤,在這種情況下,該欄位保持為 null。對於已完成的 Job,該結構為空。

    UncountedTerminatedPods 保存已終止但尚未在 Job 狀態計數器中計算的 Pod 的 UID。

    • uncountedTerminatedPods.failed ([]string)

      Set: 在合併期間將保留唯一值

      failed 保存失敗 Pod 的 UID。

    • uncountedTerminatedPods.succeeded ([]string)

      Set: 在合併期間將保留唯一值

      succeeded 保存成功 Pod 的 UID。

Beta 級別

  • ready (int32)

    具有 Ready 條件且未終止(沒有 deletionTimestamp)的活動 Pod 的數量。

Alpha 級別

  • failedIndexes (string)

    當設定 spec.backoffLimitPerIndex 時,failedIndexes 保存失敗的索引。索引以文字格式表示,與 completedIndexes 欄位類似,即它們以逗號分隔的十進制整數保存。數字以遞增順序排列。三個或更多連續數字被壓縮並以序列的第一個和最後一個元素表示,以連字符分隔。例如,如果失敗的索引為 1、3、4、5 和 7,則它們表示為 "1,3-5,7"。失敗索引的集合不能與已完成索引的集合重疊。

    此欄位為 Beta 級別。當啟用 JobBackoffLimitPerIndex 功能閘道(預設啟用)時,可以使用此欄位。

  • terminating (int32)

    正在終止(處於 Pending 或 Running 階段且具有 deletionTimestamp)的 Pod 的數量。

    這個欄位為 Beta 級別。當功能閘道 JobPodReplacementPolicy 啟用時(預設為啟用),job 控制器會填充此欄位。

JobList

JobList 是 job 的集合。


操作


get 讀取指定的 Job

HTTP 請求

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

參數

  • name (在路徑中):字串,必填

    Job 的名稱

  • namespace (在路徑中):字串,必填

    namespace

  • pretty (在查詢中):字串

    pretty

回應

200 (Job):成功

401:未經授權

get 讀取指定 Job 的狀態

HTTP 請求

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

參數

  • name (在路徑中):字串,必填

    Job 的名稱

  • namespace (在路徑中):字串,必填

    namespace

  • pretty (在查詢中):字串

    pretty

回應

200 (Job):成功

401:未經授權

list 列出或監看種類為 Job 的物件

HTTP 請求

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

參數

回應

200 (JobList):成功

401:未經授權

list 列出或監看種類為 Job 的物件

HTTP 請求

GET /apis/batch/v1/jobs

參數

回應

200 (JobList):成功

401:未經授權

create 建立 Job

HTTP 請求

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

參數

回應

200 (Job):成功

201 (Job):已建立

202 (Job):已接受

401:未經授權

update 取代指定的 Job

HTTP 請求

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

參數

  • name (在路徑中):字串,必填

    Job 的名稱

  • namespace (在路徑中):字串,必填

    namespace

  • bodyJob,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • pretty (在查詢中):字串

    pretty

回應

200 (Job):成功

201 (Job):已建立

401:未經授權

update 取代指定 Job 的狀態

HTTP 請求

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

參數

  • name (在路徑中):字串,必填

    Job 的名稱

  • namespace (在路徑中):字串,必填

    namespace

  • bodyJob,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • pretty (在查詢中):字串

    pretty

回應

200 (Job):成功

201 (Job):已建立

401:未經授權

patch 部分更新指定的 Job

HTTP 請求

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

參數

  • name (在路徑中):字串,必填

    Job 的名稱

  • namespace (在路徑中):字串,必填

    namespace

  • bodyPatch,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • force (在查詢中):布林值

    force

  • pretty (在查詢中):字串

    pretty

回應

200 (Job):成功

201 (Job):已建立

401:未經授權

patch 部分更新指定 Job 的狀態

HTTP 請求

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

參數

  • name (在路徑中):字串,必填

    Job 的名稱

  • namespace (在路徑中):字串,必填

    namespace

  • bodyPatch,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • force (在查詢中):布林值

    force

  • pretty (在查詢中):字串

    pretty

回應

200 (Job):成功

201 (Job):已建立

401:未經授權

delete 刪除 Job

HTTP 請求

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

參數

回應

200 (Status):成功

202 (Status):已接受

401:未經授權

deletecollection 刪除 Job 的集合

HTTP 請求

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

參數

回應

200 (Status):成功

401:未經授權

此頁面為自動產生。

如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。此問題的修正可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2024 年 8 月 28 日下午 6:01 PST:更新 v1.31 的自動產生 API 參考文件 (8ba98c79c1)