所屬技術領域:
kubernetes
|名詞定義|
首先 kubernetes 的 Job 是一個管理任務的控制器,它可以建立一個或多個 Pod 來指定 Pod 的數量,并可以監控它是否成功地運作或終止;
我們可以根據 Pod 的狀态來給 Job 設定重置的方式及重試的次數;
我們還可以根據依賴關系,保證上一個任務運作完成之後再運作下一個任務;
同時還可以控制任務的并行度,根據并行度來確定 Pod 運作過程中的并行次數和總體完成大小。
|技術特點|
Job 文法
上圖是 Job 最簡單的一個 yaml 格式,這裡主要新引入了一個 kind 叫 Job,這個 Job 其實就是 job-controller 裡面的一種類型。然後 metadata 裡面的 name 來指定這個 Job 的名稱,下面 spec.template 裡面其實就是 pod 的 spec。
Job 狀态
$ kubectl create -f jon.html
$ kubectl get jobs
Job 建立完成之後,我們就可以通過 kubectl get jobs 這個指令,來檢視目前 job 的運作狀态。得到的值裡面,基本就有 Job 的名稱、目前完成了多少個 Pod,進行多長時間。
檢視 Pod
$kubectl get pods pi-4cfrp -o yaml
它比普通的 Pod 多了一個叫 ownerReferences,這個東西來聲明此 pod 是歸哪個上一層 controller 來管理。可以看到這裡的 ownerReferences 是歸 batch/v1,也就是上一個 Job 來管理的。這裡就聲明了它的 controller 是誰,然後可以通過pod 返查到它的控制器是誰,同時也能根據 Job 來查一下它下屬有哪些 Pod。
并行運作 Job
我們有時候有些需求:希望 Job 運作的時候可以最大化的并行,并行出 n 個 Pod 去快速地執行。同時,由于我們的節點數有限制,可能也不希望同時并行的 Pod 數過多,有那麼一個管道的概念,我們可以希望最大的并行度是多少,Job 控制器都可以幫我們來做到。
這裡主要看兩個參數:一個是 completions,一個是 parallelism。
首先第一個參數是用來指定本 Pod 隊列執行次數。第二個參數代表這個并行執行的個數。
檢視并行 Job 運作
1.pod age 表明每次job同時建立了兩個pod
2.本job一共運作了四個批次,一共運作8個pod
Cronjob 文法
CronJob 其實和 Job 大體是相似的,唯一的不同點就是它可以設計一個時間。比如說可以定時在幾點幾分執行,特别适合晚上做一些清理任務,還有可以幾分鐘執行一次,幾小時執行一次等等,這就叫定時任務。
架構設計
Job 管理模式
Job 控制器
|資料來源|
發展曆程:
http://www.orchome.com/1337