摘要:用于批量處理短暫的一次性任務(wù),并保證指定數(shù)量的成功結(jié)束。一旦有一個(gè)成功結(jié)束,其他都會(huì)準(zhǔn)備退出。默認(rèn)值指定可運(yùn)行的時(shí)間期限,超過(guò)時(shí)間還未結(jié)束,系統(tǒng)將會(huì)嘗試進(jìn)行終止。已知問(wèn)題設(shè)置為時(shí),會(huì)與沖突,可以暫時(shí)將設(shè)置為進(jìn)行規(guī)避。
介紹
Kubernetes有兩個(gè)概念跟job有關(guān):
Job: 負(fù)責(zé)批量處理短暫的一次性任務(wù),僅執(zhí)行一次,并保證處理的一個(gè)或者多個(gè)Pod成功結(jié)束。
CronJob: 負(fù)責(zé)定時(shí)任務(wù),在指定的時(shí)間周期運(yùn)行指定的任務(wù)。
JobJob用于批量處理短暫的一次性任務(wù),并保證指定數(shù)量的Pod成功結(jié)束。
K8S支持以下幾種方式:
非并行Job:
通常只運(yùn)行一個(gè)Pod,Pod成功結(jié)束Job就退出。
固定完成次數(shù)的并行Job:
并發(fā)運(yùn)行指定數(shù)量的Pod,直到指定數(shù)量的Pod成功,Job結(jié)束。
帶有工作隊(duì)列的并行Job:
用戶可以指定并行的Pod數(shù)量,當(dāng)任何Pod成功結(jié)束后,不會(huì)再創(chuàng)建新的Pod
一旦有一個(gè)Pod成功結(jié)束,并且所有的Pods都結(jié)束了,該Job就成功結(jié)束。
一旦有一個(gè)Pod成功結(jié)束,其他Pods都會(huì)準(zhǔn)備退出。
Job Spec完整Job字段可以參考Job。Job有幾個(gè)主要參數(shù)配合用于指定完成次數(shù),并發(fā)運(yùn)行,錯(cuò)誤重試等操作:
.spec.completions: 指定job需要成功運(yùn)行Pods的次數(shù)。默認(rèn)值: 1
.spec.parallelism: 指定job在任一時(shí)刻應(yīng)該并發(fā)運(yùn)行Pods的數(shù)量。默認(rèn)值: 1
.spec.activeDeadlineSeconds: 指定job可運(yùn)行的時(shí)間期限,超過(guò)時(shí)間還未結(jié)束,系統(tǒng)將會(huì)嘗試進(jìn)行終止。
.spec.backoffLimit: 指定job失敗后進(jìn)行重試的次數(shù)。默認(rèn)是6次,每次失敗后重試會(huì)有延遲時(shí)間,該時(shí)間是指數(shù)級(jí)增長(zhǎng),最長(zhǎng)時(shí)間是6min。
已知問(wèn)題Issue #54870, .spec.template.spec.restartPolicy設(shè)置為”O(jiān)nfailure”時(shí),會(huì)與.spec.backoffLimit沖突,可以暫時(shí)將restartPolicy設(shè)置為”Never”進(jìn)行規(guī)避。Job模式注1: .spec.activeDeadlineSeconds要比.spec.backoffLimit優(yōu)先級(jí)高,如果時(shí)間到了,但是backoffLimit還未到,該Job也會(huì)被強(qiáng)制停止。
Job有幾種典型的模式應(yīng)用于不同的業(yè)務(wù)場(chǎng)景:
基于Job模版進(jìn)行擴(kuò)展:
需要先編寫(xiě)一個(gè)通用的Job模版,根據(jù)不同的參數(shù)生成多個(gè)Job json/yml文件用于Job的創(chuàng)建,可以使用相同的標(biāo)簽進(jìn)行Job管理。
按每個(gè)工作項(xiàng)目排列的隊(duì)列:
需要用戶提前準(zhǔn)備好一個(gè)消息隊(duì)列服務(wù),比如rabbitMQ,該服務(wù)是一個(gè)公共組件,每個(gè)工作項(xiàng)目可以往里塞任務(wù)消息。
用戶可以創(chuàng)建并行Job,需要能適用于該消息隊(duì)列,然后從該消息隊(duì)列中消費(fèi)任務(wù),并進(jìn)行處理直到消息被處理完。
該模式下,用戶需要根據(jù)項(xiàng)目數(shù)量填寫(xiě)spec.completions, 并行數(shù)量.spec.parallelism可以根據(jù)實(shí)際情況填寫(xiě)。該模式下就是以所有的任務(wù)都成功完成了,job才會(huì)成功結(jié)束。
可變?nèi)蝿?wù)數(shù)量的隊(duì)列:
需要用戶提前準(zhǔn)備好一個(gè)存儲(chǔ)服務(wù)來(lái)保存工作隊(duì)列,比如Redis。每個(gè)項(xiàng)目可以往該存儲(chǔ)服務(wù)填充消息。
用戶可以啟動(dòng)適用于該工作隊(duì)列的多個(gè)并行Job,進(jìn)行消息處理。與前一個(gè)Rabbit消息隊(duì)列的差異在于,每個(gè)Job任務(wù)是可以知道工作隊(duì)列已經(jīng)空了,這時(shí)候便可以成功退出。
該模式下,spec.completions需要置1, 并行數(shù)量.spec.parallelism可以根據(jù)實(shí)際情況填寫(xiě)。只要其中有一個(gè)任務(wù)成功完成,該Job就會(huì)成功結(jié)束。
普通的靜態(tài)任務(wù)
CronJobcronJob是基于時(shí)間進(jìn)行任務(wù)的定時(shí)管理:
在特定的時(shí)間點(diǎn)運(yùn)行任務(wù)
反復(fù)在指定的時(shí)間點(diǎn)運(yùn)行任務(wù):比如定時(shí)進(jìn)行數(shù)據(jù)庫(kù)備份,定時(shí)發(fā)送電子郵件等等。
CronJob Spec完整的spec字段,可以參考CronJob,介紹幾個(gè)主要的字段:
.spec.schedule: 指定任務(wù)運(yùn)行周期,具體格式參考Cron - Wikipedia
.spec.startingDeadlineSeconds: 指定任務(wù)運(yùn)行的截止時(shí)間
.spec.concurrencyPolicy: 指定任務(wù)的并發(fā)策略,參數(shù)支持Allow、Forbid和Replace。
.spec.jobTemplate: 指定需要運(yùn)行的任務(wù),格式同Job。所以其實(shí)cronJob是基于Job進(jìn)行實(shí)現(xiàn)。
參考資料Jobs - Run to Completion | Kubernetes
Parallel Processing using Expansions | Kubernetes
Coarse Parallel Processing Using a Work Queue | Kubernetes
Fine Parallel Processing Using a Work Queue | Kubernetes
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/32723.html
摘要:用于獲取元數(shù)據(jù)及根據(jù)的來(lái)匹配該會(huì)使用到的接口如下用于根據(jù)反推根據(jù)獲取元數(shù)據(jù)提供了接口用于獲取指定下管理的所有通過(guò)的數(shù)據(jù)變更,比如,來(lái)操作該。 k8s version: v1.11.0author: lbl167612@alibaba-inc.com 源碼流程圖 showImg(https://segmentfault.com/img/remote/1460000016496285?w...
摘要:如果沒(méi)有指定,則沒(méi)有期限。取消當(dāng)前正在運(yùn)行的,然后新建來(lái)替換。和這兩個(gè)字段也是可選的。設(shè)置限制值為,相關(guān)類型的完成后將不會(huì)被保留。列出所有的列出所有的遍歷所有的根據(jù)字段確定該是否由所創(chuàng)建。 k8s version: v1.11.0author: lbl167612@alibaba-inc.com 源碼流程圖 showImg(https://segmentfault.com/img/r...
摘要:核心概念是最小的調(diào)度單元,可以由一個(gè)或者多個(gè)容器組成。該模式會(huì)跟云服務(wù)商有關(guān),比如可以通過(guò)等創(chuàng)建一個(gè)外部的負(fù)載均衡器,將請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)組。而可以提供外部服務(wù)可訪問(wèn)的負(fù)載均衡器等。 概述 Kubernetes 有各類資源對(duì)象來(lái)描述整個(gè)集群的運(yùn)行狀態(tài)。這些對(duì)象都需要通過(guò)調(diào)用 kubernetes api 來(lái)進(jìn)行創(chuàng)建、修改、刪除,可以通過(guò) kubectl 命令工具,也可以直接調(diào)用 k8...
摘要:功能提供的指標(biāo),按照階段分為三種類別實(shí)驗(yàn)性質(zhì)的中階段的或者的字段。穩(wěn)定版本的中不向后兼容的主要版本的更新被廢棄的已經(jīng)不在維護(hù)的。通過(guò)比較來(lái)保證的順序并不保證包含所有資源本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見(jiàn) 概述 已經(jīng)有了cadvisor、heapster、metric-server,幾乎容器運(yùn)行的所有指標(biāo)都能拿到,但是下面這種情況卻無(wú)能為力: 我調(diào)度了多少個(gè)replicas?現(xiàn)在可...
閱讀 1932·2019-08-30 15:53
閱讀 3256·2019-08-30 15:44
閱讀 2854·2019-08-26 13:31
閱讀 1999·2019-08-26 12:10
閱讀 856·2019-08-26 11:01
閱讀 2181·2019-08-23 15:32
閱讀 1652·2019-08-23 13:43
閱讀 2594·2019-08-23 11:58