天天看點

Kubernetes必備知識: Job

所屬技術領域:

kubernetes

|名詞定義|

首先 kubernetes 的 Job 是一個管理任務的控制器,它可以建立一個或多個 Pod 來指定 Pod 的數量,并可以監控它是否成功地運作或終止;

我們可以根據 Pod 的狀态來給 Job 設定重置的方式及重試的次數;

我們還可以根據依賴關系,保證上一個任務運作完成之後再運作下一個任務;

同時還可以控制任務的并行度,根據并行度來確定 Pod 運作過程中的并行次數和總體完成大小。

|技術特點|

 Job 文法

Kubernetes必備知識: 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 運作

Kubernetes必備知識: Job

1.pod age 表明每次job同時建立了兩個pod

2.本job一共運作了四個批次,一共運作8個pod

 Cronjob 文法

CronJob 其實和 Job 大體是相似的,唯一的不同點就是它可以設計一個時間。比如說可以定時在幾點幾分執行,特别适合晚上做一些清理任務,還有可以幾分鐘執行一次,幾小時執行一次等等,這就叫定時任務。

 架構設計

Job 管理模式

Kubernetes必備知識: Job

Job 控制器

Kubernetes必備知識: Job

|資料來源|

發展曆程:

http://www.orchome.com/1337

繼續閱讀