00:00
好,那我么接下来再来测试deployment的另外一种能力,叫滚动更新。答,我已经把这个弄DE1重新启动起来,方便我们做下面的实验。什么是滚动更新,我们可以来参照这个动画,我们还是使用deployment可以我们K8S里边部署一个应用,这样呢,我们deployment可以保证这个应用呢有几个副本好假设呢,部署了这个应用有三个副本,也就是说我们启动了三个pod,当然我们的第一次部署呢,假设我们这个是V1版本,而我们这个应用想要升级,升级到V2版本,那我们怎么升级呢?而且升级的过程中我们有流量,这个箭头呢,代表我们流量不断的涌入我们这个pod,相当于我们这个pod呢,还要处理我们当前涌入来的,请求,那我们现在想要更新,还要不间断流量的整个处理过程,那我们要怎么做?我们可以使用这个操作,比如我现在想要升级VR版本,我可以呢,先启动一个VR版本的pod,就是这个pod等。
01:01
那么这个pod呢,一切运行成功了,哎,我们发现它变绿了,然后我们接下来咋办呢?我们接下来就把前面的这个pod给它下线,因为这个流量如果再打进来,就会打进这两个pod,然后呢,我们就用新的pod,而且呢是我们先让deployment控制新的pod,再把之前的下线,相当于呢,只要有流量进来,我们新pod能启动起来,就会立马打到我们新pod里边,然后呢,这样就是我们的VR版本,其实呢,与此同时,我们deployment部署的这个pod里边,那相当于有两种版本并存,那就是V1和V2,那我们什么叫滚动更新,那接下来就是我们下一个pod,也是我们先启动一个pod,等待它运行了再把这个替换掉,哎,然后呢,包括这个pod也是启动一个新pod,等它运行成功了,再把这个替换掉,全程呢我们无需停机维护,我们把这个呢也成为不停更新,而且呢是一个滚动更新一个东西。
02:01
更新完了我们才能更新下一个,一旦前面这个更新出现了问题,我们也不可能把我们剩下的全部更新完,这样的好处就是如果我们草率的更新以前,直接把所有的炮的全部他他全部杀死,然后呢启动新的,这样的话就会导致如我们新炮的有问题,我们这个紧争的请求处理都会有问题,而我们的滚动更新就允许我们杀死一个老版本,启动一个新版本,然后呢,其他老版本都还在,一旦这个新版本有问题,只会呢这一块有问题,而其他老版本的pod还是能处理请求的,这就是我们说的不停维护。我们的滚动更新,但我们想要拥有滚动更新能力,在K8S里边呢,也是一行命令,直接呢库controltrl set,但更新呢,我们一般是不是都是更新应用的镜像,因为我们这个镜像的升级其实就代表应用版本的升级,所以呢我们可以来测试一下,还是我们以之前我们部署的买DEP为例,我们可以来看一下我们之前部署的这个叫买DEP,包括我们来现在来看一下我们的这个get deploy,我们的买DEP它是用了什么镜像来,我们可以在它获取的时候呢,杠O以加卖的方式把这个东西呢输出一下,我们来看一下我们之前呢部署的这个pod deployment,我们部署的三个副本的pod用了什么镜像呢?一直往下翻,在它的secc里边呢,会有我们的containerers叫image ins,它相当于用NS最新版的镜像,然后如果我想要给它滚动升级,我怎么来做,我可以来测。
03:38
按照这个过程叫cooper ctrler get pod-W,我们可以看一下,这是我们原来老的三个pod,叫HZ2XF,还有XN598XPPNH这三个pod,当我想要滚动更新的时候呢,我就可以使用这个命令加cooper controltr了。set set时候呢,我set image,相当于我要改变镜像,改变谁的镜像,因为我们之前的这个deployment部署的应用里面有一个容器contains,容器的名字是不是叫NS,相当于我要改变N的镜像,然后呢,把它的这个镜像,我这块容器名,你看到的这个名是什么,你这前面的这个K就写什么,然等于的值是什么,我就把我的这个镜像的最新值拿过来,CTRLC,然后呢,我给这一保存,当然我set这个镜像,当然我们是修改哪个deployment呢?我可以来写一下deployment的MYDP,当然我是来修改MYDP的这个镜像。当然我呢每次要。
04:38
更新版本呢,我最好加上这个叫杠杠record record呢相当于记录一下这次版本的更新。然后我们来看一下效果,我这个命令一旦已运行回车,我们来说他说这一块必须在我们这个镜像之前来改,指定这个啊,所以我们的这个命令呢,叫你想要改哪一次应用的部署给它改变镜像,你应该呢,放到前边set里image,我们来设置谁的,我们设置deploy,我们的MYDEP的,把它的这个镜像呢,设置成这样,我来回撤,好这样一改以后呢,大家会看到是这样的效果,它呢会兴起一个叫MMGQF,而且呢,其他的老的还在,对吧,当我们这个新的running了以后,我们观察整个状态变化。
05:24
当这个新的running以后,诶,稍等。来等待它的这个装,那按照现在的状态变化,它呢已经启动了一个这个新的,因为这个新的呢,要下载镜像,所以得等待上一段时间。当然我同时呢,在下边可以使用这个命令,我也来监控一下两种不同的打印杠N1都让大家看一下,Cooper controller get po,大家会看到,诶现在呢,刚才的MMGF它已经running了,它running了以后才会把这个HZHZ呢,就是这个旧版的给termin,所以大家会看到,就是呢,起一个这个东西是不是在起,起一个杀一个,起一个杀一个,整个过程呢,最终。
06:17
最后呢,又起了一个啊,这个起了以后呢,会把这个598最后再杀了,来看一下。我们先来看这一块的状况,在这一块呢,你总会看到起一个新的,因为三副本就是一定要保证三个副本正在运行,所以呢,我要更新,我就会起一个新的,然后呢,新的起成功了,起成功了以后,相当于你是不是就四个副本了,然后我再把你老的杀了,所以呢,整个过程在这儿呢也能监控到。我们来看这一块的监控,原来呢,老的是HZXN以及XPP这三个,然后呢,它起了一个新的叫MMG,相当于起了一个这个新的,新的呢经历一段过程以后,就是经历他们等这个新的running了以后,像这个东西running了以后,然后呢才把这个老的HZ2XFHZZ2XF是不才terminating对吧,然后呢,这个呢就会被杀死,然后呢,另外我再起一个新的H h2DMHH,对这个4DM,等它呢,经过一系列状态,盆底呢,就是下载镜像啦,各种,然后呢容器创建,等我们这个东西呢,容器创建成功了,又会杀死一个老的叫HHZ2XF。
07:29
就是这个,所以呢又会杀死,然后呢,这个杀死以后呢,我们的这个HH,这是我们新的,是不是就启动成功了,然呢,接下来我们呢,又启动新的,又杀死老的,所以呢总是起星的,杀老的,我们会看到这一块呢,就是这样,这是不是起星的,起星的呢,起的以后呢,我们就在这叫叉PP,这就是沙老的,然后呢,最终我们这些呢,就全部都是新的东西,这些都是我们新启动的东西,它正在运行,我们把这个呢就称为滚动更新的过程。
08:00
用它就可以实现我们以前说的整个不停更新,对吧,我们呢,以后想要升版本了,只需要一个命令,就是我们的这个命令叫set image,我们这个命令你改一下这个版本号就可以了。
我来说两句