Kubernetes Job 對(duì)象可以用來(lái)支持 Pod 的并發(fā)執(zhí)行,但是:
- Job 對(duì)象并非設(shè)計(jì)為支持需要緊密相互通信的Pod的并發(fā)執(zhí)行,例如科學(xué)計(jì)算
- Job 對(duì)象支持并發(fā)處理一系列相互獨(dú)立但是又相互關(guān)聯(lián)的工作任務(wù),例如:
- 發(fā)送郵件
- 渲染頁(yè)面
- 轉(zhuǎn)碼文件
- 掃描 NoSQL 數(shù)據(jù)庫(kù)中的主鍵
- 其他
在一個(gè)復(fù)雜的系統(tǒng)中,可能存在多種類型的工作任務(wù),本文只考慮批處理任務(wù)(batch job)。
對(duì)于批處理任務(wù)的并行計(jì)算,存在著幾種模式,它們各自有自己的優(yōu)缺點(diǎn):
- 每個(gè)工作任務(wù)一個(gè) Job 對(duì)象 v.s. 一個(gè) Job 對(duì)象負(fù)責(zé)所有的工作任務(wù)
- 當(dāng)工作任務(wù)特別多時(shí),第二種選擇(一個(gè) Job 對(duì)象負(fù)責(zé)所有的工作任務(wù))更合適一些
- 第一種選擇(每個(gè)工作任務(wù)一個(gè) Job 對(duì)象)將為管理員和系統(tǒng)帶來(lái)很大的額外開銷,因?yàn)橐芾砗芏鄶?shù)量的 Job 對(duì)象
- Pod的數(shù)量與工作任務(wù)的數(shù)量相等 v.s. 每個(gè)Pod可以處理多個(gè)工作任務(wù)
- 第一種選擇(Pod的數(shù)量與工作任務(wù)的數(shù)量相等)通常只需要對(duì)現(xiàn)有的代碼或容器做少量的修改
- 第二種選擇(每個(gè)Pod可以處理多個(gè)工作任務(wù))更適合工作任務(wù)的數(shù)量特別多的情況,相較于第一種選擇可以降低系統(tǒng)開銷
- 使用工作隊(duì)列,此時(shí):
- 需要運(yùn)行一個(gè)隊(duì)列服務(wù)
- 需要對(duì)已有的程序或者容器做修改,以便其可以配合隊(duì)列工作
- 如果是一個(gè)已有的程序,改造時(shí)可能存在難度
他們的優(yōu)缺點(diǎn)歸納如下表所示,其中第二列到第四列羅列了主要考慮的對(duì)比因素:
模式 | 單個(gè)Job對(duì)象 | Pod的數(shù)量少于工作任務(wù)? | 是否無(wú)需修改已有代碼? | 是否可兼容kube1.1 |
---|---|---|---|---|
Job Template Expansion(opens new window) | ? | ? | ||
Queue with Pod Per Work Item(opens new window) | ? | 有時(shí)候 | ? | |
Queue with Variable Pod Count(opens new window) | ? | ? | ? | |
Single Job with Static Work Assignment | ? | ? |
當(dāng)您指定 .spec.completions
時(shí),Job 控制器創(chuàng)建的每個(gè) Pod 都有一個(gè)相同的 spec。這意味著,同一個(gè) Job 創(chuàng)建的所有的 Pod 都使用:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-497981.html
- 相同的執(zhí)行命令
- 相同的容器鏡像
- 相同的數(shù)據(jù)卷
- 相同的環(huán)境變量(例如,不同時(shí)間點(diǎn)創(chuàng)建的Pod,Service的環(huán)境變量 可能會(huì)不同)
Job 的不同模式本質(zhì)上講,如何為一組工作任務(wù)分配 Pod。下表總結(jié)了不同的模式下 .spec.parallelism
和 .spec.completions
字段的設(shè)置。(表中 w
代表工作任務(wù)的數(shù)量)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-497981.html
模式 | .spec.completions |
.spec.parallelism |
---|---|---|
Job Template Expansion(opens new window) | 1 | should be 1 |
Queue with Pod Per Work Item(opens new window) | W | any |
Queue with Variable Pod Count(opens new window) | 1 | Any |
Single Job with Static Work Assignment | W | any |
到了這里,關(guān)于k8s控制器之job--第六彈Job的模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!