00:00
好,前面呢,我们为每一个应用制作了一个docker fair文件,那以后我们这个docker就可以利用docker fair将我们这个微服务打包成镜像,那接下来呢,我们应该做的是在为每一个微服务编写一个Co notice的部署描述文件,也就是说如何把我们的这个微服务部署到cooper notice里边,我们需要有这么一个文件,那就像我们以前在notice里边我们在部署其他东西一样,比如我们再来部署S的时候,那肯定呢会有一个配置,我来写一个编辑配置文件,其实部署S就是这么一块配置,如果你把这一盘配置复制来使用我们以前的这种东西。我们以前呢用过库包controller,我们呢库包rler,它呢有一个命令叫apply apply呢杠F,我们可以来指定一个文件,假设文件的内容是那个,那它呢也就部署了,所以为了我们这个自动化流程方便,那现在每一个微服务也都应该有一个它的部署文件,那这样我呢就给每一个微服务在它的这个项目文件夹下,我呢再来创建一个文件夹叫deploy,这个deploy呢是它的部署文件,那这个部署文件呢,其实我们来参照两个地方,第一个地方呢是我们库ber s fairre里边已部署的这些东西,我们看一下它的这个配置怎么写的,那么就会做了。然后呢,再来参照我们以前cuber s fair,我们在这呢,我们做过一个自动化流程,我们是拉取的这一块的项目,这一块的这个项目呢,我们是通过我们自己的giitar HUB我们folk过来的,我们可以来看一下。
01:38
来到我们的这个仓库,我们把这个项目呢folk过来,然这个项目里边它呢是一个简单的项目,Pop文件也在这,Src也在这儿,但是呢,它却拥有一个叫deploy这个部署文件,来点进这个部署文件,这个部署文件呢,它有非常多种部署环境,比如在开发下,还有在我们这个生产环境下,还有生产环境online一下,那我们现在呢,就不用那么多环境了,我能给这个部署里边我来写,那就是生产环境,所以我在这来点一个product online,我们来参照它这一块写的也行,它这一块呢,相当于有一个压面叫单OPS,我们这个simple压面。
02:18
那这个页面里边我们大概看一下,诶其实这一块呢,描述的就跟我们库珀瑟菲尔这里边我们之前看的一样,我们还是来点进这个古力商城,那这一块呢,描述我们这个资源类型是一个deployment,相当于呢,我们现在把它呢要部署成我们的这个portd,我们还能定义有几个副本,所以我们现在只要有一种资源类型叫deployment,我们呢就把我们这个应用就布上去了,而我想我们这个cooper s里边,我们之前已部署的这个服务,我们可以随便来看一个,就以这个S为例,们点击S来点一个它的这个编辑配置文件,这个配置文件呢,它是一个service,因为我们把它暴露了,但是在暴露之前,它肯定有它自己的这个容器,我们在这个工作负载里边,我们来点进来,来看一下这个工作负载的配置,编辑配置文件,这个配置文件呢,看的资源类型是一个deployment没问题,所以接下来我们所有的写法都可以参照这一块,这一块怎么写的我们就可以怎么写。
03:19
比如我们来参到这一块,什么API version a appsv1,现在这都是固定版本,我们appsv一看的资源类型deployment,说明我们现在呢,得有一次部署Meta data,都是一些原信息数据内容,行了,我不一行一行读了,我直接从cooper fairre里边,我来CTR a ctrl c,我来复制一个,然后呢,我放到先来我们的这个also so,我们在这里边,因为它是一个压面,那我现在呢,就叫古力mail来加上模块名鼓励mail。Also,我们的这个server,这是我们的微服务名,点一个我就叫deploy,它的这个部署文件,第二我们叫压面走这压面我们创建好以后,我直接CRL位给这一粘,然后我来CTRL后,我们一行一行改,看的我们的这个资源类型是一次部署没问题,AP version我们不用改,然后name name呢我们一般都是跟微服务是一模一样的,好,我把这个复制过来,还有一个name space名称空间,名称空间写哪写,这我们来看,其实我们现在呢,每一个服务我们都部署到我们项目鼓励mail下,所以这个呢,就是我们的名称空间,名称空间之间是互相隔离的,所以我们现在所有我们古力ma商城里边的所有部署,我们全放在古励ma下边labels,这有一个APP centerel这块的APPS,我们权限给它改一下,CTRLR我们来替换,改成什么呢?以前叫APP center,我们现在将所有引用APP位置我都改成。
04:51
APP古励麦authoror现在为我们这个应用呢,起了一个我们自己的名字replace all,好,现在我们全部改掉以后呢,我们当前应用在这个名称空间下,诶应用的名叫这个label,它相当于是我们之前说跟HTML里边的ID选择器一样,我们写了一个ID属性值是这个以后要做什么时候的时候能看到下边呢,是要在这上边来进行匹配的,所以说我们现在这个level放在这notations没啥用,我们先把这个删掉,目前呢我们就不用,然后呢,我们这叫specific,这是我们的规格,相当于定义我们这次部署的一些规格详情,Relic,我们的副本数几个,我现在目前写一个一,因为这个副本数是能调的,咱们这个cooper fair里边,那随便点进来,你想调几个就调几个点进来,你觉得这一个副本不够用啊,咔咔咔咔就往上点,我们就在这儿调,让他立即生效,好我就放弃修改,现在呢,就是让咔一个副本运行,所以们在这呢。
05:51
可以调整几个副本,然后select,相当于我们接下来开始用选择器了,我这一个副本是为谁调的?然后呢,我们这要慢Les,相当于要匹配,匹配我们labels里边定义的,诶,匹配谁呢?APP古ma also server,诶相当于我就来选择它,当然我们也可以来选中别人都行,所以我们在这儿呢,就匹配上它了,那匹配上它以后呢,接下来在这块tempilet里边就规定了我们接下来的这次部署它的这个模板用的是什么?这个模板呢?它的这个创建时间,原数据接下来就是一个原数据,还有一些规格信息,原数据直接删了,然后labels里边,好,这还是我们应用的名字,Not,我们就不用了,把这个直接删了。specific,我们的这个规格,规格里边containers containers是容器的名,那这个容器名呢,我们一般都是微服务的这个名,我就把这个复制过来,因为我们以前是用图形化界面。
06:51
做的,所以这个容器名呢,图形化界面随机整了一个值,Container什么什么,然后我们现在写成我们自己为服务的名字,好,然后接下来这一块的容器名就类似于大家使用的docker wrong run,以后呢,杠杠name给我们这个容器起了一个名,那就是它好,我们叫古力妙,Also so,没问题,那接下来就是这个镜像,镜像呢,我们未来会把我们的also sor打包成docker镜像,放到docker里边,然后这一块呢,肯定写的是doer的镜像地址,而且这一块呢,我们为了后来的参数化构建,大家先不要管什么是参数化构建,就为了后来是一个动态的,什么都可用的。那么这一块呢,应该写一个动态值,就是我的这个镜像有可能升到1.0版本,1.2版本,1.3版本,这是一个动态的,所以这块怎么办呢?那我接下来就来参照我们之前的这个事例里边,它呢有一个镜像,镜像的全,我们把这个全地址我复制过来,所有的这一。
07:51
块我们看到呢,镜像这一块我们直接粘过来啊,这一块呢,能有刀了,这都是动态取值,动态的值从哪取,我们后来会从金ins的这个流水线里边去,我们先放到这儿,然后接下来POSPOS代表我们暴露的这个端口,然后呢,暴露端口的这个名字,比如我们这叫TCP,然后呢,我们这个名字我们来写一个什么,包括我们以前这一块的提示也都有。
08:17
那这一块呢,他没写没写呢,我无无所谓,包括你的这个POS不写name也行,我们看这container port 8080pro TCP这也是没问题的,咱们这个POS呢,比如我们这个name就不要了,好,我们这个name要写的话呢,你写上不要都行,我们在这儿,我们容器的端口,每一个微服务,我们现在都是默认的8080没问题,那接下来resources叫我们申请的资源limit,那就是限制门槛资源呢,限制memory最多呢用500MB,然后呢,CPU最多呢用500M,我们一盒CPU等于1000M,我们呢可以CPU给他限制,最多呢用一盒,然后request,那就是我们初始资源的申请,CPU呢是申请了10M,然后内存申请了一块,这块呢预留了一点,然后还有我们的这个相当于中断的这些消息,我们容器的一些中断消息,这些日志放到这一块,那这一块我们都是固定的,我们就不用管了,还有一个image。
09:17
Policy,我们这个镜像的拉取策略,这写了一个if not present,就说我们如果没有镜像的话,我才拉取,如果有镜像,比如我们这当前cooper ne集群里边每一个节点呢,现在调度到它了,要下载要启动了,但是它里边呢,已经帮我们刚才下好这个镜像了,那么就不用拿取了,所以if not present,那就是镜像不存在才拉取,如果我们写个always,那就是我们总是拉取,所以我们现在还是用if not present比较好。然后呢,还有restart place是不是要经常自己启动,如果我们这个容器出问题,让它呢自动再启动,在这儿呢,都有,包括我们这个中断的这个优雅,停机的这个秒述,好30秒,然后我们这DNS,我们这DNS策略class first,比如我们集群的优先,还有剩下我们这个service account account name这一块,包括我们调度给谁调度器这一块,我们都可以不要把这个呢删掉,然后strategy,我们的策略,策略里里面。
10:18
边呢有一个type rolling update,就是呢我们的滚动更新策略,诶注意那这一块呢,有一个东西叫滚动更新,这是我们Google ne里边带的最基本的功能,什么叫滚动更新?比如我们来举一个例子,我现在这个应用呢,当前是1.0版本的镜像,我从doer haveb里边下载的,然后接下来有一天我把这个镜像呢升级成2.0了,那升级成2.0以后呢,所有这个应用我们都要给它升级,那怎么升级呢?假设我们这个1.0镜像现的这个跑了pod,诶它的最基本当然是pod,那现在呢,有三个pod副本,那接下来我们怎么更新库,Ne里边用的就是我们滚动更新机制,那停一个给你起一个,停一个给你起一个,停一个给你起一个,这样呢,我们相当于一个优雅的这个整个切换更新,不是把这些以前的全删了,然后呢,把这个再圈起来,万一出问题还会有故障,所以呢,我们这一块滚。
11:18
动更新,在这呢,就能限制我们的这些滚动更新错略,比如max unavaable,最大不可用的25%和最大存活25%,也就是说最大不可用25%,也就是假设我们现在呢,有四个节点,那最大让一个节点不可用,那就是25%了,就让这一个节点不可用,然后启动一个,然后你再关下一个节点,这就是我们说的最大不可用,然后最大存活,那就是呢,我们现在允许,我们现在呢,最起码在更新期间得存活一个25%的这个应用数量,当然这是允许的最大存活,然后还有我们下边的这一块,那现在保留的这个历史版本的这个数量,我们保留十个历史版本,以及我们处理的这个deadline,相当于最后的这个时间,如果是600秒,你都没有给我处理完,那这个应用Co就认为你是卡住了,哎,没有成功,所以现在呢,我们这是一个部署文件,那这个部署完了。
12:18
以后因为我们还要把它暴露,我们让外边访问,而且我们微服务现最大的访问特点,它就是一个无状态服务,所以我们可以以loadde port的方式暴露给外边,同样的note port的这些暴露,我们空fair里边随便来找一个我们的这个无状态服务,我们都能可以看到,比如这个sel,我们看一下它的这个配置文件,它配置文件里边service就来写了,我们这一块的整个是怎么暴露的,可以完全把这一块全部又复制过来,然后呢,我们给这一粘贴,你可以再来写一个service这个暴露文件,但其实呢,压面最大的好处就是我来三个短横杠,然后呢,下边又是一个文档,所以一个压面呢,可以定义很多文档,那这个很多文档以后呢,接下来我们再来定义service service就是来暴露信息,所有的name sentel这一块我们全改成我们自己的应用名,CRLC好,CRV,包括APP sentel,我们呢,还是得权限换过来。
13:18
CTRLR,好,我们还是换成鼓励mail server点一个replace啊好,现在全替换过来以后呢,再接下来server ports我们这个规格,然后这个notation这些呢,我们就不要了,名称空间还是鼓励mail下,然后定义我们这个service的这个规格,然后这个端口,端口的这个名字我们在这呢可以不要,然后呢,我们从这个协议,TCP协议,我们这个port target port note port这三个值都是什么,其实我们看参照这一块就知道了,我们port呢,8333 target是8858,来看一下我们这个图,8858呢,其实就是容器端口,那就是我们当前应用的这个端口,然后呢,8333是暴露出来的服务端口,所以我们这个8333是我们想要暴露出来的端口,然后呢,这个是我们容器,我们现在每一个微服务现在全是8080了,我们可以呢,把它我们来还写成8080,相当于我们这个容器,诶在这。
14:18
它呢是一个8080端口,然后呢,暴露在外边也是8080,然后呢,我们通过noteport代理,我们再来给他一个端口,但然这个8080呢,是我们这个service端口,然后我们再来给他给一个端口,比如是什么就行了,然后8080,那note port这块的端口是多少,那我们现在就得规划一下了,那么呢,就让我们集群里边所有的这个服务,每一个服务呢,都从2万开始,20001 20002,好,这是20001,这是一个端口,那接下来classster IP,那这一块呢,其实不是我们在这分配的,因为我们只要指定了一个type等于noteport,那么现在呢,集群就会给它分配一个class IP,然后还有一个叫session affinity,就是我们是不是要保持绘画,这个绘画如果要保持,就在下边调整我们这个绘画的毫秒数,那我们现在呢,又不保持绘画,所以我们在这就可以来配置一个nu,包括我们这一块的配置,也可以来参照我们之前的这配置。
15:18
那么之前这个p deployment参照完了,然后看它的这个service,看它是怎么暴露服务的,这个暴露服务呢,诶来起一个name htp,好,我们来加上name吧,Name http,那为我们的这次暴露一定要呢加上一个name好,我们来写一个name http,然后呢,再来把这个缩进一定控制好,然后再来写上我们的这个type note,我们相当于以这种方式呢把它暴露出来session。Inity,然后呢,我们来写一个捺,我们无需这个绘画,亲和的好,我们把它呢一个now,这是我们暴露的service,相当于我们现在呢为一个服务编写好了它的部署文件,以及它的service暴露文件,那接下来剩下所有每一个服务都应该这么写,那唯一需要变的地方是什么?就是每一个人进来的这个名字变一下,然后呢,接下来我们要编排的这个端口号,端口号呢,在下边把这个端口号要编排的就是这个noteport变一下,剩下的呢全部都不用变了,好,我现在把这个deploy还是一样,给每一个微服务CRLC来复制一个在这儿粘贴过来。
16:34
来修改一下它的deploy,然后呢名字shift f6,我们现在这个呢,就叫古力mail cart,好,它的这个部署文件,这个部署文件里边我们来还是全部替换,然后我们来找一下这个name是古Lima also serve。CTRLR,然后呢全部替成我们的这个CTRLC,叫name,是自己为服务的名字CTRLC我来复制过来,好把这个名字呢替过来,Replace,啊替完了以后呢,再接下来把我们的这个APP古mail这一块呢也替过来,CCCRLV,然后呢是我们的古里ma cart。
17:15
空格这一块一定要有,然后re replace啊,那T完了以后呢,再翻下边剩下的所有东西都一样,我们因为我们端口都是8080,那就再往下这块回滚策略,滚动策略呢,滚动升级都一样,就是这not port,哎,我们每一个人加一个,比如2002,或者我们现在从2003每个人来加上两个,而且呢,这一块其实跟我们部署多少个这个微服务一点关系都没有,你们现在微服务呢,在K8S里边先是以pod的方式,那如果我们是以pod的方式,而且我们现在把它暴露,2003是一个service,相当于我们给这三个pod前面放了一个N负载均衡,你只要访问2003这个端口,然后呢,它就会随便的给你找一个pod来让你用就行了,所以这个天生的这个分布式带负载均衡好,我们现在呢,就在这儿整好了,然后我们的古力ma cut就准备好了,那其他的东西都一样,CRLC在这儿,这个common就不必。
18:16
对了,然后呢,我们的这个卡优惠服务我复制过来,每一个呢,我都来改一下,这一块呢,好,我来再来改上两个,剩下的大家就全部按照这个套路一改就行了,那优惠服务那么就叫卡优惠服务,好我们现在把这个名改掉,然后里边所有的这个配置,该改的都要改名字CTRLR替换,然后呢,我们这个就替换成ctrl a。Controlr v,然后替换成我们的这个服务,先来替一个名字replace or,然后呢再来替一个选择器APP这个CTRLC,然后呢,好,我们也不用CRV了,直接APP,我们现在呢替换成古ma carbon,好,Replace哦,然后这一块也剃了,剃了以后呢,再到下边一直这一块都不用动,然后再来编排一个端口号2005,好,现在我们这这一块就好了,那其他所有的这个微服务都是一模一样的,那我呢就不一个一个在这给大家再把这个视频再录过来了,让大家再去一改就行了,那我再来改一个这个get we吧,啊,最后我再来改一个,然后呢来shift f6,先来改它的文件名,那叫get y。
19:35
然后呢,再来改它这一块的配置,所有的name都写成自个儿的名CC,然后呢,在这替成。CTRLV,然后呢,换成自个的名ctrl a,诶我们CTRLV粘贴我们现在替换,然后接下来APP这一块也一样,然后呢,APP也是替换成自己的名replace啊替完了以后呢,再来在下边编排一个端口,那这个端口呢,我们就再加上两个二。
20:07
007,好,这一块编排好了以后呢,Get y就完了,那剩下的大家继续照着我们的这个步骤来做。
我来说两句