00:00
好,那通过前面的实战我们知道,如果我们想要把pod里边的某一个目录挂载出来,我们可以使用PV和PVC,当然你也可以使用原生的方式,我们说这种方式啊,它最大的特点就是我们最好在挂载目录的时候来进行使用,但是呢,我我们往往会出现这样的场景,比如我们以前在do客实战的时候,我们会启动一个red,我们希望把这个red的配置文件我们也挂载出来,这样呢,我以后改了red的配置文件my red呢,重启一下red呢,就能用到它最新的配置,包括未来我们要装my circle my circle有它自己的配置文件,装red,装rabbit MQ,装各种的中间件,可能呢,都会有它的配置文件,为了方便修改,我们都希望把配置文件挂载出来,而在K8S里边呢,我们如何做配置文件挂载的这个事情,我们说挂载目录啊,你可以用PV和PVC,而要挂载配置文件呢,我们推荐使用什么使用。
01:01
Con菲格map,然K8S里边呢,专门会有一个东西叫con菲格map,按照它的名字翻译就叫配置的集,所以呢,我们说以后想要挂配置文件,可以遵循两步,第一步你先把你准备要挂载的配置文件,你先做成人家K8S推荐的配置集,第二步你在启动你应用的时候呢,配置文件到时候要用了,你引用一下这个配置集就行了,所以呢,我们就还是以启动red为例,我就把这两步给大家做一下,看我们应该是怎样的一个效果。举一个例子吧,我们现在呢,我来准备一个red配置文件,比如我就叫red,假设呢,我们有已经有了一个red配置文件,比如这个red配置文件里边呢,我们都已经配了一个东西,End only open open呢,我写一个yes,我们知道这个对吧,那我写一个yes。
02:01
代表呢,我们这个red啊,以后的这个数据需要持久化存储好,那我准备了一个red配置文件,但这个配置文件放在这呢,没什么用,现在呢,要做一件事,使用库controller create艾命令创建一个什么呢?创建一个control map,我们成为配置集,就是专门来管理以后你的所有配置的,这个配置集呢,我们可以叫简称CM,然后给配置集起个名字吧,比如我们就叫red,那这个配置机是怎么做出来的呢?使用这个命令叫杠杠from fair相,你把我之前的这个配置文件,你给我做成K8S,那认为的这个配置集相当于我们刚才的配置文件叫这个对吧,我们做成这个配置集回车,这个命令一写以后呢,接下来大家又会看到我们这呢,Get cm的时候就会呢,有一个叫red-con的这个配置集,而这个配置机有了以后,Red con就可以删了,这个没啥用,对吧,我们只是为了把red。
03:01
配置文件创建成一个配置集,而这个配置集它呢,实际是在K8S的哪里边存着etcd,就是呢,我们以前在介绍K8S,说K8S所有的这个数据都会保存在它的这个etcd,它的档案库资料库里边,这呢就是一个数据库,所以我们只要放心的把你的配置文件做成配置集,我们K8S只要活着,它这个内容呢一定还在,所以接下来呢,我们的第二步,那就剩下干什么事了,我来启动一个pod,在用到red配置文件的时候,我用它配置里边的东西就行了,拿这个配置集到底长什么样子,可以给大家看一下,Get cm,比如呢,我们叫red杠,然后呢有一个叫杠o yama,我给大家看一下它yama形式的内容,这个内容呢,就是这把这一块内容呢,复制过来,复制过来呢,我们来给大家精精简一下这个内容里边到底啥是。
04:01
有效的,比如这些呢,有一堆内容,什么me data,它的创建时间,这些时间戳啥的我都可以删了,这些呢我都不要,然后什么u ID resource version,这都是一些源信息,我都不要,我只保留我们关键的,所以大家会看到刚才呢,我们使用这个命令创建出来的东西啊,它呢其实是相当于如果你要写压慢,你就是这么来做的,然后呢,这段压慢里边我们来注意观察上几项,第一项叫name,叫red con,对吧,Name呢,那就是我们这一块说的,然后呢,Name就是每一个资源的名字呗,就是我们现在这个资源叫con map,它的name叫这个我们的po,它也有name k8S里边啥资源都有name啊,这个无所谓,没啥说的。然后呢,接下来资源的类型是con map,就是我们现在准备让K8S创建一个配置集,而配置集的真正数据就在data里边,所以呢,大家注意data里边是所有真正的数据,而这个真正。
05:01
数据呢,是什么样的?它还是K冒号V的形式,只不过呢,K它叫red.con为什么呢?是因为我们文件名叫它,所以呢K是文件名,我们可以在这儿记录一下K,我们如果用上面的命令默认可以是文件名,既然K是文件名了,那大家说我配置文件的值是什么?所以呢,它的这个Y6部分就是配置文件的内容对吧?Y6就是保存了,你看我们之前配置文件里边写了openend on the yes就在这保存着,这个呢,短数线代表呢,接下来是一个大文本,对吧?然后呢,Value就是配置文件对内容,所以呢,我相当于把我们之前的这个文件给做出来保存到这,那保存到这儿以后呢,接下来我就可以创建pod,在它启动的时候,关键时刻我来挂载一下,比如呢,我给大家看一下我的这个pod,这个pod呢。
06:01
那还借鉴以前我们docker启动red的命令,我docker启动red的时候呢,比如把red的配置文件我是不是做了出来,然后呢,我们docker启动red,使用reddi的服务器,然后呢,自己加载我们做出来的这个配置文件,这个配置文件呢,在容器内部是这个路径,所以让它自己加载这个路径一启动就行了,Doctor的这个包括我们的数据我也挂载出去了,所以呢,我的这个pod呢,我是这么来写的,首先呢,我现在也不写这个deployment了啊,懒得写那么复杂了,比如我们在这直接创建一个portd pod呢,用的镜像是red,对吧?Red的启动命令叫red server,有时red服务器,然后呢,会加载一个位置,而这个位置大家一定要清楚的是,它指的是容器内部的位置,指的是reddius容器内部的位置,所以呢,相当于我们reddi服务器啊,自己找reddi容器内部有一个reddi masterdi。
07:01
点杠red conf这个配置文件,然后我们ready启动就要加的这个配置文件,然后这一块呢,都是小事,只有这是大事,大家注意,这呢我写了两个这样的东西,一个叫value mounts,叫卷挂载,卷挂载呢,我挂了这么几个地方,一个叫杠data啊,一个叫data,这个data呢,它挂载的路径杠台data相当于我把red容器,这是我们的red,我们未来会启动一个pod,对吧,Pod里边呢会跑我们的刀口容器,我们会把这个里边的杠data目录,所以red历里边的数据目录,这个杠data,杠data呢,我会以data这种方式挂载,而data塔这种方式呢,名为data塔的挂载是怎么挂的,在下边配置了名为德塔的,就随便分配一个啊这个目录让它工作就行了,所以K8S呢,就自己分配一个临时目录,这块呢,我们没啥看的,主要看这因为我们red启动要加载自定义的配置本文件,配置文件是不是还被我们做出去了,做成了一个。
08:01
的这个CM,所以呢,接下来我在这一块是这么来写的,叫mon pass red master,相当于red呢,下边有一个red master,而我的这个red master文件夹下本应该是不是有一个red,因为我服务器一启动是不是要加载它,所以呢我呢说red master这个路径的配置是这样子的,它呢名叫configig,名叫configig的挂载在这儿,名叫configig在这对吧,我们以前挂载啊,有很多种方式,比如这是NFS,但现在呢,这不是了,这变成什么卡map,也就意思说接下来啊,我们你想要用的这个配置文件是从我指定的配置集里边取的,当然到底这一块呢,是什么样的引用关系,我可以给大家截两个图来画一下,首先呢,我们把配置文件做成了第一个叫配置集,把这个配置集呢,先截个图,这是我们的配置集。
09:01
比如我们看我们的这个需求,我们的需求呢,现在就是这样,我启动一个red对吧,Red自定义启动命令要加载一个自定义的red配置文件,而这个杠呢,挂在一个空位置,我们不管了,主要是这个配置文件是要在red master这个目录下要找他的,而它的内容呢,其实是在这K8S呢,已经把它保存起来了,成为配配置级了,所以我怎么把它引用过来呀,那接下来呢,就得这么来引用,来到我们pod的写法,所以接下来pod的这一块写法就特别重要。我把port的这一块写法给大家截个图来看它们的引用关系是什么样的,放大一点好把这个呢稍微缩一下,他们的引用关系呢,现在就是这个样子的,我的这个pod,好,现在来画出来,首先我的这个pod里边这是不是有一个挂载叫config ready master好,就是它,然后呢,这个名为config的挂载,它呢是在下边这配置的,所以呢,名为config的挂载是这一堆的配置,而这一堆的配置呢,他说我的名为configig,相当于给这个目录下挂东西,是从这个里边挂,从哪里边叫red config,而且它是一个配置集,所以呢,K8S自己呢,就会去找,找一个名叫red con的配置集,而名叫red con的配置集正好在这,不有吗?
10:36
之前做了一个名叫red con菲格的是不是con菲格map是不是这个配置集,所以呢,K8S啊先你不是要找这个吗?我先找到,找到以后呢,关于这个配置集里边的真正内容是不是在这啊,而哪个这块内容啊,未来可能会很多,但哪个作为red配置文件呢?所以接下来它这一块是这么写的,It,所有的it就是来获取我data里边的所有项所有项目的内容,我配置了第一个项目是不是叫red con,所以呢,它这写了一个kk red con,说明呢,我接下来先引入,引入你的第一项配置,名叫red con的这一项配置,说明我呢,接下来会把这一项的内容,对吧,这一项的内容。
11:24
Red con的这一项配置是不是在这呀,所以呢,我接下来会引用你的这一块配置,而引用你的这一块配置接下来会有什么样的效果呢?将来最重要的就在这了,有一个叫pass,什么叫pass,叫路径,所谓的K,就是呢,我把你ready.com ready.com ready.com这个K的所有内容拿来,拿来放哪呢?大家注意啊,放到这个路径下叫red k,而这个路径呢,其实是挂载到red master下边的,对吧?所以呢,未来就会这个red,就会在red master下创建一个red这个配置文件,然后呢,而这个配置文件里边的内容就是我写的open on yes就是它,所以呢,这就形成了整个挂载关系,就说这都是一个触类旁通的,以后呢,甭说我起ready,我起my circle。
12:25
任何的中间件,如果它的配置我想抽取出来都是这两步,我把它的整个配置文件,我想让让K8S呢,做成一个配置集以后呢,我在pod里边,我呢就直接干嘛,是不是引用这个配置集里边,比如我的这个配置文件名叫啥名呢?就是这个K,而真正的内容呢,就是我们要用的配置文件的这个文件名就放在这儿,放在这儿的文件名啊,当然我们这写的这两个名是一样的,这名其实可以不一样,比如你这就叫C,你有一个文件就叫ABC,比如呢,我的这个KAABC,就说我取出ABC的值,把它的值放到red com这个配置文件下,所以呢,这个配置文件其实就在这个下边,因为呢,这一块是不是在red master下挂载这呢?所以这个pass指的就是路径,也是说它的子路径,在我们挂载的这个路径下,有一个子路径叫red内容呢,就在这,好,这就是我我们说的配置集,当我们来测试一下行不行呀。
13:25
我把我们的这一块的配置ctrl a ctrl c大家直接一粘贴,主要的核心就是这个我的REDDI1启动的时候,使用自定义启动命令,我来加载我的red配,而我的red配置呢,我们在下面声明呢,是引用你在外边之前做好的那个配置集里边的red conf的内容,好我把这ctrl a ctrl c大家看一下,嗯,然后呢,我们现在比如VI,我们就写了一个red,点一个压吧,来给大家看一下,粘贴WQ退出并保存,然后呢,我们让red创建一下,来等f red点样板回车,好他说red这个pod创建好了,看一下吧,那这个pod到底咋样了,Ready port来等等一阵,容器呢正在创建中,那等一阵呢,应该就是容器呢就能运行成功。当然这个等呢就。
14:25
我在这儿等啊,我可以在这儿等看一下我们的可视化界面等哦,可视化界面呢,重新得登录,重新登录进来,诶我们这个red是不是就骑起来了,骑起来呢,我为了确定我们是不是改过了,在这儿可以点一个执行看一下,因为我们的这个我们是在red master容器内部有一个red文件夹,这个文件夹下是不是有一个red,然后呢,我写个red,你看这个on是不是就是yes啊,而且呢,使用K8S把这个配置集做出来的另外一个优点,我们使用这个默认挂载这个配置集的情况下的,另外一个优点就是如果我K8S在外边把red配置文件改了,它在内部呢,还能自动改掉,所以给大家看一件这个事库包ctrl get cm,这是不是我们的这个配置集,我把这个配置集改一下啊,怎么改库包CTRL我直接edit cm我直接修。
15:25
在这个,哎,我们之前做好的这个配机,我修改的时候呢,这有一个内容叫open only yes对吧,比如呢,我再有一个内容,比如再有一个内容,比如就叫require pass require pass,那么需要呢,一个密码对吧?密码呢,我写一个123456,所以呢,我把这个呢,我又加了一项release的配置WQ我退出并保存,我这一改以后呢,大家会看到,大家稍等啊,我来给大家看一下这个配置文件的内容呢,我们来等它同步,等一会儿呢,这一块的内容就会出来,稍等看大概需要等几秒,好,刚才呢,我大概等了一分钟,然后呢,他在这呢就同步过来了,这跟我们集区的速度也有点关系,对吧?所以呢,我们red的配置文件呢,它自己把这个内容就同步过来,当然。
16:25
如果你的这个中间件有那种能力叫热更新,就是呢,你的这个中间件,比如red,你自己呢,能感知你的配置文件变了,你重启,那相当于我们就跟配置中心的功能一样了,对吧?我们K8S啊,直接把我们的配置文件做成一个con map,这一改以后呢,还会给你自动同步到pod里边的这个位置,而如果你pod这个中间件能感知到这改了,然后自动再重启,那就更完美了。所以呢,这就是我们K8S把这个配置抽取出来,未来只要我们想要挂载配置文件,那都推荐使用这个菲克map的方式,而且呢,它的这种修改默认呢,就是我们这种挂载默认呢,还有自动更新功能,就是我们说的热更新,只要我们con菲格MAP1改,接下来呢,你就会看到我们的pod里边呢也改了,包括这个配置有没有生效,你也可以确认一下使用这个命令,比如con菲,呃,这有一个con菲get吧,就是这个get。
17:25
来获取一下这项配置,看有没有生效,在我们的这儿,我呢现在使用red的客户端,连上我们的这个red容器,来使用它的这个命令,看一下我们的openend only这一项配置有没有生效,好,有生效,那我们还配了一个叫require pass,有没有生效啊,这个肯定没有啊,因为require pass呢,我们在这一块得red重新启了以后才可以,所以你可以把这个po,你让它重新启动一下,对吧,我们在这呢给它删除重新再来执行,那肯定也没问题,因为我们不是使用deploy部署的,所以呢,你在这儿就算删除了它呢,也不会再新创建一份,但是呢,我们只是为了测卡菲格曼普,最终呢,就是这样的效果。
18:12
首先con菲格曼普,比如修改康菲格曼普,我们也能测试到,对吧,它里边的内容呢,确实跟跟着变了,所以最终呢,我们的效果就是修改了CM,然后呢,Pod里边的文件,里边的配置文件,配置文件会跟着变,会跟着变,但是呢,真正不会生效,就像我们刚才我在这儿检查呃,Open on,当然我还检查了一个,我写了一个叫require pass,但require pass呢,它就不能生效,不能生效的原因是因为我们red自己没有配置热更新能力。所以我在这再来写下pass,如果你自己有的话呢就行,所以大家注意配置者的值呢,其实并未修改,你呢需要重新启动pod才能呢,让pod重新加载这个配置文件再起一份,这个主要的原因,原因就是我们的这个中间件,我们的pod,我们的pod部署的中间价,自己这不怪人家K8S啊,怪你自己,自己本身没有热更新能力,K8S帮你把配置文件都更了,但是呢,你你自己呢,不感知变化,不去应用最新配置,那K8S也拿你没办法,好,这就是呢,我们的所有的这个配置,以后记着我们挂载目录用PVPVC用挂载配置文件用抗菲格曼,这就是我们的最佳实战。
我来说两句