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