00:01
各位战友大家好,今天呢,我们一起来学习一下cobert的n job控制器cran job类似于Linux当中的crow服务,但是在目前的云环境解决方案当中,我们会更多的使用到c job来做周期性计划任务。就借今天这个机会,我们深入探讨一下这个c job到底是怎样一个存在。本次课我们分为三步走,第一,要了解CR job的定义、作用和基本原理,第二,常用参数c job有哪些常用的参数,这点很重要,我们一定要深入的掌握这些参数的使用,才能在后期的生产环境当中很好的去运用c job.第三,典型使用场景c job有哪些具体的使用场景呢?目前云解决方案当中引入c job做哪些工作比较多?
01:00
首先我们来看什么是c job, 就像刚才提到的,它本质上和Linux系统当中的crow是一样的,但是呢,调度的不仅仅是简单的命令了,而是封装在to里面的一个应用。C job的基本原理,首先要创建job对象,我们可以通过ya某文件来定义,然后控制器监控cooper的c job controller持续监控集群内所有的C资源对象。第三,时间触发。当系统时间匹配到schedule浏R字段的时候,控制器触发任务,创建逻辑。第4,创建job补对象cn job控制器根据配置的job template自动实例化一个新的job对象。5、任务执行教步控制器根据模板创建pod,真正执行具体的业务逻辑。
02:01
6状态管理,跟踪创建job补的状态,依据并发策略等参数进行全生命周期的管理。下面我们再来看一下c job的常用参数。首先是一个必填参数schedule schedule的写法和Linux当中的框一致,都是通过分时、日月、周来指令。我们再来看第二个time zone time zone是在cooperbert的1.27版本以后才引入的这么一个参数,它的作用就是解决一个时区的一个概念,方便我们全球化部署。然后再看job template job template也是必须要写的。因为我们的cn job是通过。创建job本来完成周期性计划任务的,所以说它需要定义一个job的模板。
03:03
我们再来看下一个concurency policy concurency policy是设置一个并发的策略条件是吧,比方说。我任务A正在跑,我这时候呢没跑完,任务B又触发了,这个时候就需要根据我们配置的这个参数来做一个区分,我们先来看第一个参数allow允许。允许并发执行新旧任务同时执行,这个比较好理解,就不再赘述了。再看第二个forbid,禁止并发直接跳过新的任务执行,这个该怎么理解?也就是说我任务A正在跑,这个时候呢,没跑完,任务B又触发了,然后他就会跳过新的任务,也就是我的任务B,哎,不执行了,让我的A接着跑完。
04:00
这个就是forbid,然后再看第三个replace,替换当前运行任务,先终止旧任务,再启动新任务,这个比较好理解,比方说啊,又并发了,那么A你也别跑了,B开始从头跑。好吧,这个就是一个替换动作,在目前的解决方案当中使用最多的是forbid这块大家需要了解一下。然后再看下一个参数,Starting data second starting data second其实是设置了一个嗯,容错的时间段。如果说因为任务。节点故障,资源不足等原因是吧,错过了原本需要调度的时间,但是呢,只要你还在一个时间窗口以内,那你这个任务依然会被调度执行,但是如果说你超过了这个容错的时间,本次任务直接跳过不再执行,好吧,这个也比较好理解,容错时间大家可以这么理解。
05:06
我们再来看下两个参数,历史记录管理。历史记录管理是两个参数,由successful jobs history limit和field jobs history limit分别指定系统保留的成功和失败的job历史记录的最大数量。也就是说,我的job不是通过创建job然后去完成周期性计划任务吗?那么它的创建的job会保留几次呢?成功的?我推荐保留3次,失败的我推荐保留1次,为什么失败的只保留一次呢?因为比方说我们在环境当中啊,你这个周期性计划任务失败了。也就是任务没跑起来,那我们是不是只看上一次的报错结果就可以了呢?如果说我看上上次的,那其实没有任何意义,对排错来说是吧,嗯,你完全提供提供不了任何的帮助。
06:03
典型的使用场景,这里我总结了两个,第一,数据库备份。数据库备份我们在讲解job的时候已经详细讲到了,这里就不再赘述了,无非放在c job里面,就是周期性的去做数据库的备份。再看第二个日志清理,日志清理可以说是在目前行业解决方案当中使用最多的这么一个情况。就比方说我在P里面去写了一个逻辑,去判断我的磁盘,或者是某个路径。下的文件。达没达到一个阈值,比方说超过了70%或者是80这个阈值,那他就会给我执行一个清理的逻辑,清理到。这个60以下还是70以下是吧,这个都是可以自己去设定的,主要是这么几个使用场景,好吧,然后BBD部分就已经结束了,下面开始我们的实验环节。
07:05
好,下面开始我们的实验环节,这里呢,我准备了一份压木,压木文件呢,我们一起来解读一下,首先是API version定义核心组合版本,然后king的类型要起一个corn job corn job的原数据我写了一个名字哈,给corn job起的current job让苏晓轩然carr job的规格,这几个参数刚才我们PPT部分已经讲过了,这里我再简单的提一下SC定义我们的调度时间,然后成功保留的历史个数我保留三份,失败的历史个数我保留一份,然后容错时间我写的是300秒。嗯,并发策略我这里是forbi的,也就是说我不允许两个周期性任任个任务并发执行。Job template, 我要起一个job是吧,然后我给这个job还定义了一个PARAISM3。
08:01
也就是说我在起这个叫步的时候,我要顺带拉起来3个破的给我去完成我的任务,我们再来看一下我们具体的容器的内容,然后这个是容器的名字,容器的镜像,容器镜像的拉取策略,然后容器起的时候要执行的命令,我执行了一个data塔和IO,输出一下当前的时间,以及输出一下这段话。还定义了一个容器的重启策略啊failure,也就是说容器失败退出时重启,好,这就是一个嗯,参数比较全面的一个current job了啊,当然了,这个命令部分我们要根据实际的环境去做配置,好吧,来,我们一起来执行一下扣班CTLYPPLLY。呃,CN叫回车,我们一起来看一下c job看。CR jobs.
09:01
是不是就创建出来一个实例,名字叫job杠苏小轩,然后调度时间,然后这个suspend这等等等等吧。我们来看一下哈,现在还没有调度,具体怎么看上次调度的时间呢?我们可以通过last schedule这个来这个来看这块就记录着上次调度成功到现在的一个时间啊,还没有刷新。我把这个加个杠W好好,这个已经刷新了,3秒之前说明3秒之前已经起了一个叫本去完成任务,我们一起来看一下啊库班。CTL guide jobs是不是起了一个对吧?那它起了代表什么?是不是还同时拉起了3个pod去完成任务呀,和CTL guide portd是不是有3个对不对,而且这三个里面是吧?嗯,Logs这三个里面输出的内容就是我指定的是不是输出一次时间,然后还输出了苏宾云计算对不对?这个就是周期性计划任务的一个使用,当然了这块没有什么好展开讲的了,参数呢比较简单,希望同学们在后边的实验环节呢多练多学多交流,本次课就到这里。
10:29
感谢大家的观看,再见。
我来说两句