00:02
各位同学大家好,欢迎来到本次课,今天我们要一起学习Co nettis里面非常重要但又特别容易蒙的一个东西。汗蒸。不用担心听不懂哈,我会用大家都爱吃的煮火锅来打比方,保证你一听就明白。今天这节课呢,我们分成四步走,第一,先搞清楚我们为什么需要探针,它到底解决了什么问题。第二重点来了啊,用煮火锅的例子。带你理解探针,轻松搞懂这个探针,它到底是干啥的?第三。带你看看实际的配置文件。教你怎么配置怎么用。最后呢,我们会把今天的这个课做一个总结。来让你彻底记住它们的区别。
01:00
在正式学习之前呢,我想先问几个小问题,第一个容器刚启动的时候,你就能代表这个服务能用了吗?对吧,就像是我们平时去银行取钱,这银行的门刚开,你敢保证那窗口他就肯定有人能受理业务。哎。不一定对吧,因为有时候他可能没人。我们也可能都遇到过这样的情况。第二个。服务跑着跑着卡住了,夹死了,我们怎么自动发现?是不是?就像是我们平时玩电脑游戏对吧,你打什么英雄联盟啦,地下城啦,QQ飞车。是不是有时候会跑着跑着哎,突然间死机了,要不就卡那不动了,有这样的情况吗?第3个。如果说你服务还没有准备好。
02:00
就有用户访问,会不会直接崩掉呢?这几个问题全都靠今天要讲的三大探针来解决。探针就是给容器做体检的一个小工具。首先我们讲第一个启动探针,你可以把它理解成煮火锅前的,哎,准备工作,你锅洗了没有。是吧,你燃气有没有是吧,也就是你那个,或者说你电主锅有没有,你有没有电。你底料放了没有?你料管调了没有?对不对。他其实只干了一件事,就是检查你这个应用呀,能不能正常起来,如果说你一直启动失败是吧,你就得重启容器,就像是说你发现燃气没了对吧,你料碗没调,你那个火锅底料没有,你是不是得赶紧准备呀,该买买该怎么样怎么样,是不是你得重新准备吧,不然的话你吃什么?
03:00
是不是?再来看第二个探针。就绪探针。对应的场景就是你火已经点着了,但是你水呢,还没烧开,你说这时候能下菜吗?当然了,你如果说你要硬下,那也能下。但是是不是不建议,是不是你水没开,你把肉放里边了,你把菜里边放到放里边了,是不是煮老了。这不是你要的一个理想状态吧,你也不差那一会儿吧,是吧?它的作用就是检查服务是不是已经准备好了,可以接待用户了,对不对,如果说你没有准备好,就先不让用户访问,等准备好了再开放,对不对?简单说就是没准备好,不接客嘛。第3个探针,存活探针。存活探针你可以理解为保命探针,就像是火锅,煮着煮着,你是不是要时不时的看一眼这个汤是不是?
04:01
嗯,还剩不还剩多少,你不能烧干了吧,你火是不是还正常的,他专门盯着你这个服务运行过程当中有没有卡死假死的一个情况,如果说他发现,哎,你这个服务挂了,他就立刻重启,把服务救回来。防止说你这个服务你站着位置你不干活儿对吧。最后呢,我们来回顾总结一下刚才的内容。启动探针只管启动,起不来的就重启。就绪,探针只管能不能接,用户没好呢就先拦着。存活探针就是只管你活没活,死了就重启就回来,你记住这个比喻好吧,然后你以后再应用的时候就不会再搞混了。PPT呢,主要是到这里,接下来我们开始进入我们的实际配置的一个环节。
05:03
现在呢,我就进入到了master上面,打开了这样一份,这是我提前写好的,我们一起来看一下定义了哪些内容,首先呢,API version定义了接口组和版本,然后定义了kind pod定义了我们要生成的这个资源类型是pod,然后原数据我们给pod起了一个名字叫苏晓轩杠inx,然后Spark定义的规格写了哪些内容呢?Containers要起一个容器,对吧?给容器起了一个名字叫苏晓轩刚。容器使用的镜像是INS冒号latest镜像拉取的策略if not present, 意思是本地有就用本地的,本地没有就从远端仓库拉取。然后又定义了容器的一个端口。
06:00
对外暴露了80,然后重点来了。Start up for.启动探针使用哪种方式呢?Http guide?去检查哪个目录。网页的网页根目录下的index.html对吧。通过哪个端口去检测。容器的八零。然后初始化延迟时间啥意思,就是你这个容器起来5秒以后开始检查,就相当于是给他预留了一个时间嘛,你不能说是你这边,哎,容器刚起来,他立马就去问,哎,你好了吗?是吧,你这样的话。不现实。然后我们继续往后。Period seconds3是吧,周期时间嘛,每3秒检查一次,然后few freshhold5连续5次检查失败及重启容器。
07:06
对吧,你不能说你失败了就一直失败了,干耗着那不行。我是有一个容忍限度的,对吧,你不能超过。5次这个限度,不能说我检查你5次了,你还是失败。那我不行,我不愿意看到这样的一个结果,所以我会让你重启容器。就是这样一个意思,我们继续往后看,Readines.这里定义了就绪探针。方式是HTTP盖的。和启动探针的方式是一样的。然后检查这个目录下的。网页文件也是通过。容器的八零端口,然后初始化时间是吧,10秒钟,也就是容器启动10秒以后开始检测,然后周期时间两秒,每两秒检测一次,然后这个地方。
08:01
Success, 然后hold是1这个地方是什么意思?检查成功一次就允许接收流量了。你的第当然了,如果这个地方你也可以写二五十都可以是吧,你写2的话,意思就是连续检测两次都成功才算成功,你写5,那就是连续检测五次成功,那才算成功呗,是吧?这个很好理解,我们继续往后。PRO定义了这个存活探针是吧,也是通过http get这种方式检查。网页目录下面的index.html,然后通过容器的80端口去探测,然后初始化延迟时间是15,也就是说容器启动15秒以后开始。这个存活探测的一个检测。
09:00
然后又定义了这个P位的SECONDS5是吧,周期时间嘛,每5秒检查一次,然后最后又定义了fill your hold3是吧,连续三次失败就触发重启容器的这么一个动作。好了,这份压目我们已经看完了,我们来,嗯,看一下实际的一个效果。这么通篇看下来,发现好像也是比较顺利的是吧?为了验证效果呢,我们来搞一点破坏。为了让大家看到这个实际的效果,对吧,NX镜像里面的默认的网页文件就叫index.html对吧,我们为了让他,哎,就是就绪不了,我们给他搞点小破坏,我们给他写个1。对吧。你默认的网页目录的下面是没有这个INDEX1HTML,也就是说。
10:01
Go.就去探测这一步,它是检查不通过,检查不通过。是不是这个破的就相当于是没有就绪是吧。你相当于就是这个破的没用。用不起来是吧。来,我们一起看一下效果。先退出,然后主播CTL。LY-F,然后回车。好,提示正在创建当中,我们清下屏。然后CU CTL guide pod回收,是不是ready这块儿是0-1呀,对吧,它为啥一直起不来呢?我们来看一下描述,哭波CTL de be pod、苏小轩杠NGX回收。Warning.警告你是吧,警告你什么呢。Reds PRO失败了。是吧,你这HTTP去探测它的时候,哎报404。
11:03
你检测不到这个网页的存在,对吧,网页叫什么名字,你也就是说你找不到INDEX1的HTM呀。对不对,我们现在再搞一个事情,就是我们让这个就去探测它得恢复是吧。我们怎么给他恢复。我们现在。库,CTLEXE到at,我们进到容器里边,我们给它创出来。然后获得的名字所先杠NGX,然后指定分隔符并且的BAH回车进到user share.XHTML, 这个就是默认的网页目录回收LS,我们来看一下。对吧,它是不是检测的是这个index1.html,但是现在没有对吧,这也是符合预期的嘛,然后我们给它创建一个E。
12:03
爱过什么呢?嗯,给他写几个字儿。那我给你写几个字儿。写个什么呀,写苏晓萱。到死EU可以吧,然后追加到inex1.h可以吧。现在是不是有这个文件了,对吧,现在有这个文件,按道理来说他是不是应该就绪呀,我们来退出看一下库CTL get.是不是就绪了?因为他现在已经有这个文件了,所以它可以被就绪探测成功探测到。而通过就绪探测。对不对。好。就绪探测完事儿了,我们是不是还想再触发一下存活探测对吧?存活探测怎么探测?我们再来看一下我们的文件。
13:07
存活探测它定义了,它也是去找这个index.html对吧,如果他找不到。哎,是不是连续3次找不到对吧,就会触发这个。存活探测的一个保护机制,是不是会让你这个容器重启?对不对,我们来现在也进到这个容器里面再搞一次破坏,我们这回要干什么呢?我们把index.html改一个名字,是不是它就找不到了。好,我们来赶紧操作一下。Yes is'gone.搞it啊,一提到搞破坏,确实大家都比较来劲啊。然后苏小轩告诉NGX,然后直接分割符嘛,变下的DASH回声。进入到user she.
14:02
然后N,然后HTML。然后给他改个名吧,index.html是吧,给改成什么呢?嗯,改成个index2.html吧,回车好按照预期。是吧。连续3次失败,我们就会被。呃,不是我们就会被,是容器就会重启,我们就会被踢出去,对不对,我们现在就等着应该啊,你看。是不是?是不是被踢出来了?给你返回一个137的一个状态码,对吧,为啥被踢出来了,因为它检测不到这个文件了,这个文件被我们改了名字了,所以触发了存活探测的一个重启机制。来,我们来看一下胡波cpll get获得。是不是,你看START1是不是重启了。对吧,来我们稍等一下应该。
15:01
这样吧,我们看一下他的状态吧,库班CTL。嗯,De c be, 然后是pod,苏小轩杠nginx回正。现在的卡点是什么哦。Readines哦,就绪探测没有通过对吧?就绪探测没有通过,刚才我们就绪探测是我看readiness哦。大家能理解为什么吗?我们默认Ajax。的网页是index.html对吧,刚才。存活探测触发了,重启了这个容器,重启容器是不是之前的那些操作都没有了呀,也就是说现在这个容器里面的网页目录是不是应该是index.html对吧。所以说你这个readines去检测INDEX1的HTML是检测不到的,所以它失败。
16:08
我们来给它创建一个先让readiness PRO通过检测我们来看一下效果,Cooper CTR ex X ec-A对吧?苏小娟杠,NGX杠杠。定下的bash是吧,进到里面user。Shares HTML.是不是没有了,我们给它创建一个好,我们就随便写点啥吧,写个一二三是吧,来到index一点。好,现在创建了是不是。那个叫就绪探测就可以被通过了,我们来看一下。CTL.嗯,Get吧,肯定get,看一下破的状态是不是起来了。因为我们创建了这一个。INDEX1+HTML,所以他通过了readines的这个检测,是不是它能检测到了对吧,而且成功一次就算成功对不对,所以它通过了存活探测的检测,成功的启动的容器。
17:17
今天呢,知识量可能稍微会多一些,视频呢,如果说大家一次没有理解,你还可以再看第二次,如果说第二次你还没有理解,也没有关系,你可以在评论区留下你的一些看法和一些个想问的问题,我们可以一起再深入的交流一下,最后呢,希望大家嗯。手就是实实际际的,咱们把这个实验做一次,该打的命令打一次是吧,你自己亲自做了,看到了效果了,这样。我觉得对你的成长来说是非常大的一个帮助。嗯,就说这么多,再见。
我来说两句