以下內容均來自個人筆記并重新梳理,如有錯誤歡迎指正!如果對您有幫助,煩請點贊、關注、轉發!歡迎掃碼關注個人公眾號!
目錄
一、基本介紹
二、工作原理
三、相關特性
四、資源清單(示例)
五、常用操作
一、基本介紹
Job 控制器是 Kubernetes 中用于運行一次性任務的 API 對象,它負責啟動指定數量的 Pod,通過跟蹤記錄達到 Completed 狀態的?Pod 個數,并判斷是否達到設定的閾值來確保這些 Pod 成功完既定任務。
Job 通常用于部署一次性任務或批處理任務。
二、工作原理
- 定義對象:用戶定義一個 Job 對象,指定 Pod 模板和其他配置選項
- 調度 Pod:Kubernetes 根據 Job 的定義創建 Pod,Pod 被調度到節點后開始執行任務
- 監控 Pod:Job 控制器會監控這些 Pod 的狀態,確保它們成功完成任務
- 完成任務:當所有 Pod 都成功完成任務后,Job 狀態會被標記為 Completed
- 清理資源:完成的 Job 及對應的 Pod 會在一定時間后被系統自動清理
三、相關特性
- 并行執行:Job 可以指定并行運行的 Pod 數量,允許任務并行執行以提高效率
- 成功計數:Job 控制器會跟蹤成功完成任務的 Pod 數量,直到達到用戶指定的完成數量
- 失敗重試:Job 可以配置重試策略,當 Pod 失敗時可以重新啟動新的 Pod 來嘗試完成任務
- 自動清理:Job 完成后,相關的資源(如 Pod)會被自動清理,減少資源浪費
- 依賴管理:Job 可以設置依賴,確保任務按照特定的順序執行
- 生命周期:Job 提供了一種機制來管理任務的生命周期,包括任務的啟動、監控、完成和清理
- 彈性伸縮:可以根據任務的需求動態調整并行執行的 Pod 數量
- 監控和日志:可以對 Job 的執行情況進行監控,并收集相關的日志信息,方便問題排查和性能分析
四、資源清單(示例)
# job.yaml
apiVersion: batch/v1
kind: Job
metadata:name: demo-job
spec:backoffLimit: 3completions: 1parallelism: 1ttlSecondsAfterFinished: 20template:metadata:labels:app: demo-jobspec:restartPolicy: Nevercontainers:- name: demo-containerimage: busyboxcommand:- sh- -c- for i in 1 2 3 4 5 6;do echo $i;done🔔 默認情況下,Job 任務運行失敗或異常結束時,Pod 狀態會變為Error,同時創建新的 Pod 繼續運行任務
🔔 backoffLimit:指定任務運行失敗時,嘗試重新運行任務的次數,默認為 6 次,0 表示不嘗試重新運行
🔔 completions: 指定任務需要完成的次數
🔔 parallelism: 指定并行運行的任務個數
🔔 ttlSecondsAfterFinished:任務完成后,自動清理 Pod 的時間(單位s)
上述 job.yaml 文件定義了一個名為 demo-job 的 Job?對象,每個 Pod 包含一個名為 demo-container 的容器,該容器使用 busybox 鏡像,啟動后執行一次性任務(打印數字 1 ~ 6)。
說明:可以通過以下命令查看 Job 資源清單支持定義的內容
kubectl explain job --recursive
五、常用操作
1、創建 Job
kubectl create -f job.yaml
或
kubectl apply -f job.yaml
2、查看 Job
# 查看實例列表
kubetcl get job# 查看詳細信息
kubectl describe job demo-job
3、刪除 Job
# 方式一:命令行
kubectl delete job demo-job# 方式二:資源清單
kubectl delete -f job.yaml