目錄
gang scheduler介紹:一個kube-batch作業(kube-batch job)可能有多個pods, 這些pods要不全部執行,要不一個都不執行。
一、名詞解釋
-
k8s job:一些pod集合
-
kube-batch task: pod,一個kube-batch task就是一個pod
-
kube-batch podGroup: 一組pod,這是kube-batch自定義的crd,主要用來實現gang scheduler。通過設置podgroup的minNumber,達到每次調度要麼執行minNumber個pods.要麼一個都不執行。
-
kube-batch job: 一組pod,指向某podGroup的所有pod(一個kube-batch job就是一個podGroup,見下圖),可以對應一個或多個k8s job
kube-batch\pkg\scheduler\cache\event_handlers.go
注意:
-
一個k8s job必須指定一個podGroup,否則會指定一個shadow podGroup
-
一個kube-batch job 可以對應一個或多個k8s job
舉例:
如果有一個k8s的job, 假設爲Job1,有2個pod, 他指定的podgroup是gp1. 同時還有一個k8s的job, 假設爲Job2,有2個pod, 他指定的podgroup也可以是gp1.
同時提交這倆個k8s job。
在kube-batch看來,當前要調度的只有一個kube-batch 作業。這個kube-batch job總共有4個Tasks(pod)需要綁定。