00:01
A森and乡亲们,本节课我们要学习的内容是K8S的RC控制器,我会从概念、作用、原理、配置、实践,再到对比的升级方案,全程的由浅入深,保证零基础也能完全听懂。开始,今天呢,我们一共要学习7个部分。第一,什么是RC控制器?先要搞懂它是谁?第二,RC控制器的核心作用,RC解决了什么问题?第三,RC的工作原理,它的底层是怎么运行的?第4RC配置文件呢,我也会带大家逐行的去讲解。第5 RC的实践操作,我会带大家在环境里面自己动手创建并且查看。
01:01
第6 RC和replic set对比的技术演进。最后会带大家回顾总结,巩固今天的重点。首先,什么是RC控制器?RC的全称是replication controller, 翻译过来就是副本控制器,是K8S里面最基础、最核心的工作负载资源之一。他的任务其实就是一句话,保证集群里永远有你指定数量的pod在运行。我给大家打一个比方吧,RC呢,就像是一个尽职尽责的保姆,时刻盯着自己,自己负责的破的,如果破D因为崩溃、节点宕机、被意外删除等原因消失了。RC呢,会立刻发现,并且马上创建一个新的pod补上去,让数量永远不变。
02:10
我们来看一下RC的核心作用。RC的核心作用呢,刚才已经提到了2个,对吧?哎,管理它的副本数量和自愈能力,也就是说。刚才已经提到了啊,没了就往上补,多了就删减,对吧?下面这两个是什么意思呢?我们再来一起看一下扩缩容和滚动更新,扩缩容其实很好理解啊,流量大的时候就多加破的嘛,流量小的时候就减少嘛。非常的灵活对吧,最后一个滚动更新,滚动更新也很好理解,你升级应用时不用中断服务,非常平滑的,就把你旧的破的诶给替换下去了。
03:04
这四大能力就是RC能保证服务高可用的根本原因。下面我们再来看一下RC控制器的工作原理。RC到底是怎么工作的?其实非常简单。就就分成这么三步。第一步,持续监控RC呢,通过标签选择器一直盯着符合条件的pod。当然了,什么是标签选择器?后面我会给大家详细讲解。不用担心。第二步,状态对比,把当前实际运行的po的数量和你配置里写的期望的数量做对比。第3步,自动纠偏,也叫自动调节,少了就新建,多了就删除,永远和你的期望保持一致。所以RC的核心机制就是监控。
04:12
对比行动。很好理解对吧,我们继续。标签选择器。这个地方一定要讲清楚的一个概念,就是RC怎么和你的pod做的关联。我们都知道RC是pod的控制器,对不对?那它是怎么去找到pod并管理它呢?这个时候首先要了解一个概念,就是标签。标签呢,是附加在cot对象上的一个建值队,也就是king和value。对于对象进行识别和分类,就像给物品添上了变迁。
05:00
对吧,我们都去过超市,你超市是不是分为好几个区。我老家,我给大家举个例子,我老家有永辉超市。它里面有。生活用品区对吧。酒水区,零食区,还有嗯,生鲜区,海鲜区对不对,这里的区就是像嗯,这里边标签的这么一个意思,哎,就给它做了一个识别和分类。再往下看,什么是标签选择器?刚才我们其实已经提到了,对吧?它是RC用来筛选和管理pod的规则。怎么理解呢?通过匹配pod的标签,RC能够精准的确定自己的管理范围,是连接控制器和受控对象的一个中枢。
06:04
我给大家举一个例子。你RC既然要管理pod,你是不是知道你要管理哪一些pod,你不能说你是个pod,你就管理吧,就无论说和你这个业务有没有关联,你都要管理他吗。那显然不切实际。那通过什么。来匹配管理呢,就是通过标签选择器下面的标签。好,我们继续往后看,如果这个地方没有听懂也没有关系,待会儿我会带大家看实际的配置文件,我会再提到这一概念。我们来一起看一下配置文件。这是我写的一个完整的RC的一个例子,我们可以作为参考。
07:01
待会儿我会在环境里面实际带大家再过一遍,这个配置文件里面具体的详细字段,这个地方就先跳过。好,然后这是一个实践操作,实践操作待会儿我会在环境里面带着大家演示,希望这个时候呢,大家可以把自己的电脑打开,和我一起操作一下后续的一些个。后做动作。我们再来看一下RC和RS的详细对比,我们直接看表格。首先从选择器的角度,RC只支持简单的相等匹配,RS支持集合匹配功能呢,相较于RC会更强一些。然后是滚动更新层面,RC原生支持,但能力稍稍会弱一些。
08:03
RS配合deployment的使用功能呢,也会稍强大一些,现在项目使用呢,更多会选择RS和deployment。但是作为初学者,我觉得学习RC还是非常有必要的,因为RC上升会稍微简单一些。只有我们了解了RC,后续在学习RS和deployment的时候才会更容易上手,更容易理解。今天的PPT就讲到这里,下面我们开始环境演示。好,下面就开始我们的环境演示,这里呢,我准备了一份yam,叫RC.yama,我们来一起看一下这份yam文件。
09:00
这是我写好的RC控制器的一个现成的M,如果说同学们需要的话,可以在评论区留言,然后我会私发给你,我们来一起看一下这份ya某的具体内容,首先是API version定义核心组和这个版本,然后kind的reflectation controller定义了RC这个类型,是吧,我要创建RC嘛,然后定义了原数据,我给RC起了个名字,叫什么呢?叫RC-test,再往下。Spake规格期望,然后是reply case3,也就是说我希望运行三个pod的副本,只也就是说无论怎么样,你一定要保证有三个破的副本在运行,就是这个意思。再往下看,Select是吧?标签选择器只管理标签为是吧,APP=RC-test pod, 也就是说它选择器嘛,他去找谁,他去找这个是吧,也就是破的一定要是APP=RC-test的才可以。
10:17
下面是timell,这个地方很关键,这就要开始定义pod的模板了,是吧?然后我们接接着接着往下看啊,Label boss.下面就是定义了这个pod的标签吧,你看上面这个,你上面这个选择器要选择谁,要选择这个,这个在哪儿。这个在这儿是不是就对应上了,很好理解哈。好,我们继续往后看spike。规格期望我们要起一个容器,对吧?容器的名字叫什么呢?RC杠,苏小轩对不对?然后Image这什么S冒号,Latest, 这是我们要拉取的镜像的名字,然后镜像拉取的策略,Image poor policy if not present, 意思是如果本地有就用本地的,如果本地没有就从远端仓库拉取。
11:21
好,再往下看en nv, 这个en nv是环境变量的意思,这个大家可以先不用理解啊,我写这个的目的主要是让大家知道,哎,有这么一个参数。在后续我会单独的去拿这个env去给大家做演示,这里大家签,诶,混个脸熟就可以了,我们来看一下它定义了什么内容啊,环境变量的名字定义了,哎,Get host from对不对?环境变量的值Y6DNS。然后是,也就是说上面这个是king,下面这个是。
12:03
值。对吗?键值嘛,相当于这个键,这个是值很好理解哈,然后第二个环境变量的键和值,然后下面呢,又定义了一个端口暴露,暴露了这个容器的80端口,这样一份压表就算结束了,我们来一起执行一下,我们来看看这个效果怎么样。保存最初好谷歌CTLLY杠。F是吧,RC点一下没有快车哦,它提示了一个enr哦,我看一下是什么意思啊,破的哦,已经有了,这样吧,我回退一下。DETE是吧。Ete, 然后杠FRC.M,我先回退,这条命令就是回退配置文件的,然后我们再创建,不是CTLPLY,杠F。
13:01
RC点一下没回收好,开始创建,然后我们来查一下破D的状态,库波CTL get pod是不是有三个pod在运行,是不是符合我的预期。但是各位同学想一下,这个实验到这里能算结束吗?是不是像刚才我们说的。一定会满足3个破的副本的状态呢,我们来验证一下,现在我搞点小破坏,我给他删一个酷包c port, 我删哪个呢?我就删这最后一个吧。回收。好,删除完毕了,我们来再来看一下兔子的状态,是不是他又给我重新拉了一个呀?通过这个创建时间,你看12秒前,12秒前我删了一个嘛,然后呢,RC.
14:07
就看见了,诶你看你这儿少了一个,我再给你创一个,是不是他始终会保持这个破本破的副本的数量呢。到这里实验还没算完,还记不记得之前我们提到过。你这个RC会找,哎,就是和他标签一致的破的去管理,那管呢。这个我们也需要验证一下,现在呢,我们再把这个pod的标签,哎,再给它改一下,咱们看看它能不能。管理得到啊,以及是个什么现象。我就清一下屏扣包CTL,嗯,这样吧,再查一下吧,然后我先查一下它的标签的一个状态扣分,CTL guide code, 然后杠杠show labels LB.
15:02
EL04回收好,我们这样的话就能看到这三个pod的标签了,对不对?我们给它改一下,就给改最后这一个吧,CTL, 嗯,L Bel label label是改谁的呢?改破D的,破D哪个破D呢?那个就这个破D的吧,那你看总是他他最倒霉是吧?改成什么APP等于什么?嗯,RC杠泰斯特999是吧,回车。哦,它提示一个我看了。哦,它需要加一个参数,如果说你在改的时候,你的这个键的名字都是APP,它不会让你直接修改的,你需要加这么一个参数,哎,覆盖保存是吧,Overweight嘛,他就是怕你误操作,所以会提示这么一条是吧,这个大家注意一下就可以,我来执行一下回收。
16:04
是不是我把这个标签改了?这时候我们再来看一下破的状态CTL get回。他是不是多创建了一个呀,对不对,为什么。大家想一想为什么?我来给大家拆解一下。我一开始把这个pod的标签给改了,是不是RC就找不到这个破的了,对不对,找不到这个破D了,但是RC呢,又得满足期望,所以他创建了这么一个pod。从而满足我的副本要求。不知道屏幕前的各位同学听明白了没有?对吧。原理就是这么一个原理,其实很好理解,如果说看到这里,各位同学对哪些知识点还没有掌握,或者理解的不够透彻,可以在评论区留言,我们一起再深入探讨。
17:16
今天的课就到这里,再见。
我来说两句