00:00
前面呢,我们已经搭建好了K8S的集群,那接下来我们就来测试一下我们对集群的整个操作,我们使用一个非常简单的事例,就是我们给K8S里边来部署一个tomcat,那如果是我们以前docker的方式,我们是这样做的,们可以使用docker run命令来启动一个toca的容器,来指定一个镜像,这样呢,Docker先帮我们来下载来镜,然后依据这个镜像来启动一个容器就行了。当然如果使用K8S,我们可以使用这个命令叫cooper controller create deployment创建一个部署,来给这个部署起一个名字,然后再来指定一下镜像,这个镜像呢,当然可以来于来源于我们这些镜像仓库,比如doer hib,那么这个镜像指定好以后,那么这个K8S它呢,就会通过主节点来调度我们某一个其他节点去来下载这个镜像,并来启动容器,然后呢,最终形成一个我们说的。
01:00
Pod,我们说K8S里边最小的部署单位是pod,我们启动的这个容器在pod里边,好,我们就来测一下这个,我们使用这个命令,那么还是连上我们这个K8S集群,那这个命令呢,我们就来默认给它在我们的master节点,NODE1呢,我们说将来当成master在这个节点测试就行了,那其他节点我们来写这些命令,可以来测一下库controltrler,如果我来写一个get noes,那默认呢,都是不能使用的,还是需要一些配置,我们就直接在主节点,让主节点来调度我们其他节点。好,接下来我们创建一个事例,叫库controller。Google controller,我们来create创建一个什么呢?叫deploy deployment创建一个部署,我们为这次部署起个名字叫Tom cat6,然后这次部署要用到什么镜像,这个镜像呢,来源于我们的do help,那么这个镜像呢,来写一个我们的这个Tom k6,我们在这之前搜了一个镜像,带了GRE,相当于带了咱们这个GRE环境的Java环境的好,那现在呢,就创建一个这个我来直接运行,那接下来呢,我会发现它提示我们deployment apps,也说我们的这个TOMCA6的应用,这个部署已经创建了,那创建了会是什么样子呢?来库controller给大家看一下,我们使用这个命令叫get o来获取K8S里边的所有资源,那现在资源呢,它分为我们三张表,诶这四张表格,第一个表格是一个pod,前面是资源类型,相当于我们现在呢要部署一个pod pod呢是他们开的六,然后呢带了一些其他。
02:38
唯一标识,然后呢,Ready,我们这个TOMCAD6的这个pod里边呢,有一个容器,但是呢它还没有准备好,容器呢,正在创建中,而且我们这个service当前还有一个service,我们说的服务,后来我们说一下service是什么,那么这一次就是我们的deployment,我们的这次部署,他MK6我们做了一次部署,但是呢,零个成功,那还没有成功嘞,还有我们的relic set,那这个呢,就是我们的复制,我们这个应用呢,要复制几份,那现在要复制一份,但是呢还没有一个ready状态,而且我们现在既然让master来调度给我们来要部署一个pod了,那相当于这个pod就得在我们的其他节点NOTE2或者NOTE3来部署,那么怎么知道master放在哪个节点了呢?我们可以get o-O,那让它呢,打印出更宽泛的内容,那么在这呢,可以看到我们这个get o里边的这个pod,它部署的节点是K8S note3。
03:38
然后呢,它正在running,说明呢,它在NOTE3节点已经部署好了,我们这个,那NOTE3节点我们可以来看一下,NOTE3节点呢,我们先用这个命令来验证一件事情,我们docker images看我们NOE3节点下载了哪些镜像,发现呢,这有一个镜像叫Tom KT,那说明我们现在tomca的部署,那分配给NOTE3节点了,NOTE3节点先下载镜像,那它肯定要启动容器啊,那doer PS看一下正在运行中的容器,有一个容器呢,那就叫tomcat,它呢也把这个容器启动了,这容器的名字超长,那就在这儿,所以们这个容器呢,也都启动了,所有的东西呢,都准备好了,那我们这一块看到的这个状态,CU controller,我们来重新看一下CU controller们的getar PS,那现在呢,直接使用get POS,我们来获取它和它默认名称空间的。因为如果我们是O。
04:33
Names杠杠。哦,我们的namemo space,我们可以来看一下,我们默认呢,其他的所有系统的这些port的服务,它呢都在cooper system,我们的cooper notice的系统名称空间里边,我们部署的所有应用呢,都在一个默认名称空间里边,所以我们get ports呢是拿它默认名称空间里边的信息,而且我们现在呢也能看到完整信息杠oy的我们确实能看到,它呢在NOTE3节点,它已经创建了这次部署,那这次部署呢,就牵扯到我们之前的说的这么各种资源,我们再来看一下get all我们一个破的。
05:13
一个service,还有一个deployment,还有一个plic set,这些东西是什么,我们来后来再说,所们现在呢,确实验证了我们K8S帮我们自主来选一台机器来进行部署,那既然部署到NOTE3了,如果我们现在模拟这个情况,NOTE3节点宕机了,那会是一个什么现象?好,现在呢,把NOE3节点我们来让它宕机,或者我们直接在NOE3节点它这刀ERPS,它不是有一个应用中的容器就是这个tomca吗?我们直接在这给它停了doer stop来模拟,由于各种问题,我们的这个容器它给停掉了,那停掉了以后呢,会是什么效果?那现在来看一下doer PS,那确定呢,Tomcat它呢又重新拉起一个,相当于我们这个tomcat刚停掉,它重新又拉起一个,这就是由于我们呢,这个东西它总是说要得有一份的,所以呢,我们这一份呢,就放在这儿,那么现在直接来模拟宕机。
06:13
我们来把这个K8S我们的NOTE3,我们来让它宕机,这个宕机呢,我们直接给它关掉电源退出也行,我们来直接关闭电源,好模拟由于各种原因,现在出现了宕机问题,那我们现在来看,那K8S note3现在宕机了,我们这个节点呢,已经连不上了,这个主要连不上,我们在我们的master整个集群里边来get no,那它的这个节点状态他就应该感知到,来稍等一下,这没感知到呢,还得稍等一会儿,不是呢,非常灵敏们先来等待,我们这一块都中断提示我们连接不上了,好,我们来到这一块,我们来测试一下,好,现在NOTE3节点呢是note ready,那现在是note ready,我们现在再来看,我们来看一下现在的这个状态,那这个状态呢,现在是这样子的,它其实已经监控到我们这个NOTE2NOTE3这个节点宕机了,所以NOTE3跑的这个pod它呢被中断了,然后呢,在NOT2节点我们重新拉起了一份,NOTE2节点呢,打印容器呢,正在创建中。
07:13
所以NOTE2节点呢,它现在肯定就得拉取镜像来下载我们的tomcat,下载完以后呢,再来启动容器刀ER PS note3note2节点呢,又启动了一个tomcat,那至此我们这个NOTE2节点又准备好了这个tomcat,所以呢,我们总是来保证我们这儿呢有一个副本的存在,所以我们刚测试了第一个我们的容灾恢复。就是一旦我们有一个节点出现了宕机,它可以帮我们自动恢复,把我们当前的这个pod拉取到其他一个节点,好,我们现在呢,就让我们这个NOTE3节点重新再来启动一下就行了,那么看到呢,现在它确实在我们这个NOTE2节点重新拉起了,这个汤不开的NOTE3节点呢,它想要中断,但这个中断呢,现在NOTE3节点都已经断线了,所以这个任务呢,发不出去,现在让NOTE3重新启动起来。
08:06
那只要NOTE3我们这儿呢,全部启动起来,来连接一下我们这个NOTE3,那我们的现在我们先来看一下我们现在的这个集群库,Controller get notes,我们现在的集群状态,NOTE3是note ready的,好,我们现在NOTE3呢,全部连上来,稍等一下看我们的这个节点信息。好,现在呢,我们发现它呢,就是ready状态了,NOTE3READY了,NOTE3既然ready了,我们来再看一下,那NOTE3的这个终止任务,他收到了,收到了它NOTE3自动呢就要把这个停掉,因为NOTE3里边呢跑了一个pod,它下次启动如果没有接收到这个停掉这个pod的任务,它呢还会把它跑起来,所以这一块呢,现在把这个停掉,那我们现在呢,就测试到了第一种效果,我们的这个容灾恢复,接下来我们这个汤MCAD6,如果我们想要暴露给外边访问,因为这个TOCAD6呢,我们既然已经创建好了,我们接下来可以使用这个命令,将库包controlr ex expose,我们要暴露一个部署,暴露哪个部署呢?我们的这个Tom cat6,然后接下来呢,有一个杠杠PORT80,然后杠杠target port 8080,然后tap等于node portt,这什么意思,就是我们都知道呢,Tom KT容器,我们里边呢,跑的是Tom KT tomcat默认暴露的端口。
09:27
这8080,但是如果我们是使用docker容器的话,我们以前是把8080映设为一个端口,但我们现在doer呢,又是用pot封装的,所以我们来写的第一个它给它portt,那就指的是我们这个pod里边的这个容器,它暴露的端口是8080,但是呢,访问我们pod用哪个端口,用八零,然后呢,访问到我们的8080,然后呢,接下来把我们整个pod呢,要作为一个我们称为叫service要暴露出去,暴露出去以后用的是什么模式,有一个叫node port,叫我们这个节点端口的模式,那这种模式呢,就相当于把我们这个port作为一个service,它呢随机分配一个端口帮我来暴露出去,当然我们自己也可以使用杠杠node port自己来指定一个端口,那最终效果就是这样,如果我指定了,比如我们叫30778,那这样的话呢,我们去外界访问30778,那呢,就会访问到我们pod的这个八零。
10:28
然后pod的八零呢,就会代理到它容器里边的8080,因为我们一个pod里边可能还会有多个容器呢,这也是可能的,好所以呢,我们现在就来运行我们这个命令,我们来暴露一下我们的这个部署,我们使用库巴ctrler,好,我们库巴ctrler,我们X pose,我们要暴露暴露一个什么呢?我们的这个部署deployment,我们刚才呢部署了一个TOCA6。COMCA6我们要暴露它,但暴露它呢,我们可以来指定这些参数,比如杠杠port,那是指定我们这个portd的这个端口,我们叫8088,随便叫吧,那比如叫八零,然后在杠杠target port,那就是我们这个pod里边这个容器暴露的端口是8080,然后呢,接下来我们还要指定杠杠type,我们是以何种方式来暴露我们这个服务,叫node port,好,我们就就来指定一下杠刚type等于no the port,那先来测试一下,具体他们都能写什么值,我们后来再说,好,我来回车,回车以后呢,发现诶有一个东西叫service toca6export,我们现在呢,暴露了一个service,我们现在来使用这个命令叫库cler get,我们比如s VC service,我们来看我们之前有一个默认service k ne,现在还有一个Tom kt6,然后Tom kt6呢,它随机分配了一个端口。
11:57
叫31533,那我们这个TOMCAD6的这个service暴露在哪了呢?我们接下来还可以杠O们来看一下Y的我们这个service呢,31533,那现在呢,其实就可以使用31533来进行访问了,好,我们来复制一下,来访问一个31533,来访问我们虚拟机幺九二点,幺六八五六点,比如我们来10131533,因为我们这个东西呢,已经暴露出来了,走。
12:24
喂,我们看到呢,访问了我们这个tomcat,这就是我们来创建的这个,这个呢,我们把它叫service,重新获取一下CU controller。来get一个service,我们获取到所有的service是这个,当然我们也可以来get off,我们就能看到所有的信息,我们的这个pod,然后呢,它被封装成一个service,对外暴露的是31533端口,然后它的这个po的产生是由于我们这次部署产生的,这次部署呢,最终还有一个我们的副本,副本呢相当于我们tomcad运行几份,运行一份我们这个pod相当于在一台机器有一份就行了,这么说的这种。
13:05
那接下来我们还可以再来体会一个功能,我现在能暴露出来了,我们来测试一个动态扩容,我可以命令他把我他CA6给我扩容上,我们副本数指定三,那就是扩容三份,扩容呢是库包controller scale,我们来扩容,杠杠re来指定一下我们的副本数量,指定几它就给你扩容几份,好来使用这个Q8CONTROLR了,我们来这个scale,我们想下想要扩容,然后呢,杠杠我们的这个副本数我们来指定,指定呢现在是几份,我给它扩容三份四份都行,我现在就两个节点,扩容三份都已经足够了,好扩容三份以后,接下来我们再来告诉他,我们是来扩容哪次的部署的,我们有一次呢部署了一个tomcat,所以我们来指定deployment。我们是来扩容我们come k6的,好,我们来回车一下,这一块呢,现在已经扩容出来了,那已经扩容出来以后呢,我们库巴controller,我们来重新get pas来看一下杠o wide,好,我们现在看到Tom k6在NODE2节点运行了两个,NODE3节点运行了一个,相在我们全扩出来了,然后呢,接下来再来看一下我们的service service好service呢,我们Tom k6好,只要使用31533端口,你现在在任何节点访问都行,因为我们在NOTE2NOTE3节点都有了,所以我现在在NOTE3节点回车,我发现tomca的六又能访问了,所以我们使用cooper ne很方便的就能扩容这些东西,当我们想要缩容也是一样的,把我们指定的这个数量们现在重新附本数再变为一走,那变了以后呢,我们再来get POS们来看,那它就会随机来挑两台。
14:55
把它的这两个给它termin给它停掉,停掉以后呢,我们就只剩一台可以被访问了,那们现在就来测试了一下我们cooper ne里边的一些基本操作,比如我们的故障恢复,我们部署了一个东西以后自我修复,而且我们部署的这个呢,它在我们容器中,它在我们每一个节点放的是一个portd,然后它会记录这次部署信息,叫deployment,那想要暴露,那其实呢,是做的一个service,只要我们想要暴露呢,我们在这儿就能看到我们get service,那就会有一个Tom cat6的这个service,然后呢,接下来我们还可以给它动态扩容,当然所有东西呢,如果我们不想要了,我们就可以给它删掉,比如CU controller delete,那你想要删掉什么资源怎么办呢?我把这次所有的部署,我们都不要了,我们可以先CU controller来get off,当然呢,能看到我们能获取到所有的资源,这有一个portd,这呢还有service,这还有deployment,所以呢,我可以来。
15:56
删掉,比如cooper controller,我们呢直接来delete,我们来删一个大的,因为我们呢要做一个东西,我们肯定生成一次部署,所以呢,我直接把这个部署信息删了,把这一次部署的详细信息我来复制一下,好,我在这儿呢直接删除走,那么这个部署一删除了以后呢,来重新看一下get all get all里边呢,发现只有记录了service信息,但是呢,我们来看一下我们的port有没有the ports,然后呢,我们直接来访问,你发现我们默认名称空间下,在默认名称空间下呢,已经没有所有的port了,你即使有这个service暴露,因为我们现在没部署这个portd,那也没啥用,所以我们想要删service也可以来删库包,CTRL来delete,那想要删service呢,把它的这个service详细信息再复制过来,我们再来做一次删除,走,那我们现在呢,全部删掉库,Controller get all。
16:56
好,里边呢,已经没有所有信息了,只剩一个Co notice的这个service了,这是一个默认的service,是来监听443我们的这个安全连接端口的,那么现在呢,Tomcat所有的都不能访问了,没问题,我们已经把所有的都删掉了,这是我们使用corporate net集群来部署扩容和自动恢复一个应用。
我来说两句