00:00
好,前面呢,我们通过命令行的方式,或者配置文件的方式,或者我们在界面上点点点,我们创建了自己的这么一个pod,而且我们创建的这个pod它的特点呢,就是来看一下go controller get pod,我们这个pod里边呢,有一个,诶,这个一就是有一个正在运行中的容器,这个容器是我们用NX镜像启动的doer容器,但在K8S底层呢,我们把这个容器还要再封装一层,那就是pod,大家应该对这个概念要有一个深入理解,就是pod封装了一层容器,但是呢,Pod是K8S里边最小的单位,就像我们之前举的例子,如果容器是真正干活的这些打工人,那这个pod呢,就是给他分配的宿舍,他就老老实实的待在这个宿舍,但是呢,我们还说过pod有一个这样的特性,就是每一个pod它都有一个唯一IP,是不是能进行访问啊,那就像我们给每一个员工。
01:00
分配的这个宿舍,这个宿舍呢,每一个宿舍它都有一个门牌号一样,我们都能访问到这个宿舍,而且呢,我们说PD还有一个特点,我们说PD它是一组运行中的容器,而我们刚才启动的这个PD呢,它运行中的容器只有一个,如果这个PD里边呢,挤了很多人,这一个宿舍挤了很多人,那这是不是就是一组哈,那我们也可以来看一下,我们如何让一个pod里边能部署两个或者更多容器的这么一个应用,好我们来这个操作呢,我们来参照我们的文档,如果我们pod里边看我们以前,以前呢,我们使用配置的方式,我们pod里边呢,在container字段一听翻译过来就叫容器,对吧?在这个字段呢,我声明了第一个容器它用的镜像是NS,但是呢,我接下来我再准备一个pod,注意两个pod的名字呢,不应该一样,对吧,肯定不能创建同名的不一样的东西,好那每一个pod的名字不一样,就像我们每一个宿舍的宿舍号啊,不一样一样,我们把这个。
02:00
的名字呢,规定好,但是呢,大家看我第二个配置文件的pod里边containers字段叫容器字段,我们杠一个杠一个,这是压慢的写法,一个杠就代表一个完整的元素,那相当于在这个pod里边有一个容器,第一个容器呢是NG,然后呢还有一个容器,第二个容器呢是他姆CAD,这样就形成了一个pod里边是不是挤了两个容器啊?哎,这就是我们这个宿舍内住了两个员工,但是K8S里边呢,还是以po为单位的,那么就来看一下一个宿舍里住两个员工怎么个玩法,VI,比如呢,我们可以把它叫multi container multi,咱们的container,我们多容器的这个pod点一个页码,我们把这个配置文件呢,我就直接给这以粘贴WQ,我使用库包controltler LA,当然整个操作呢,你自己在可视化界面整也是一样的回车好,这个pod呢被创建了,我们给大家看一下get pod好。
03:00
好,我们会看到呢,第二个pod,这是不是一个二啊,就是它里边呢挤了两个容器,那我们就稍等一会儿它就能启动了,包括我们在可视化界面里边来看一下,这是我们的第二个MYAPP,它被分配到哪个节点了呢?叫K8S nude1节点,所以呢,你真正的如果来NUDE1镜像你docker image来检查的话,它最终呢要下载两个,一个是inddi,一个是我们的tomcat,只不过现在还没下来,没下来的原因呢,就是我们这个pod要启动,肯定把它里边的两个要下载来,所以大家看这个事件里边已经分配到我们的这个码APP到K8S1节点了,我们分配好了,这是45秒前的,然后呢,诶,46秒前呢,我们接下来正在下载N几镜像,那等一会儿呢,NS镜像下载完,那我们这个pod里边呢,第一个容器就起好了,而且大家会看到这个可视化界面呢,还挺不错的,前面的资源信息由我们这个pod被分配到哪个机器检点了,包括。
04:00
Pod当前的状态是什么?就是呢,容器正在创建中,就是我们看到的这个字段,Container creating,对吧,这是我们的在这儿,然后呢,包括这个pod重启几次了等等,然后再接下来在下边这有一个事件,诶它记录了一分钟以前怎么办,90秒以前好十秒以前我们的NG镜像下成功了,然后呢,正在启动NG容容器,15秒以前我们NG容器启起来了,所以大家会看啊,我们这个pod里边呢,会有在容器这个里边,它这有两个,一个两个缩一下,能明显的通过它这个界面能看到我们的这个买APP,这个pod里面有两个容器,一个是NS,一个叫tomcat ns用这个镜像,Tomcat呢用这个镜像,而通过这个事件呢,我们又能看到在40秒前我们这个started ns容器已经起了,所以呢,我们在这儿你就能观察到,观察到这个。
05:00
二杠零那容器启的,如果第一个容器启动运行成功的话,那就是二杠一了,那就等二杠一啊,来稍等一下,好,它只要容器第一个容器运行成功,这应该就是绿色的,二只要第一个容器开始启动了,就开始下载第二个容器我们要用的镜像啊,所以我们开始就等它看一下,什么时候我们有一个二杠一呢,Watch-N1,每隔一秒呢,运行一下cooper ctrler get,它pod命令来看一下,然后呢,对比我们这儿,那这儿没动静呢,那是等待我们第二个镜像一定要下载完,所以在弄到一节点一定在下第二个镜像,稍等一下,但大概呢,我们看等了五分钟左右的样子,我们这个呢,就启动起来了,包括我们看可视化界面,界面里边呢,两个容器呢,那都是绿的,那就没问题了,所以呢,我们。
06:00
现在呢,先第二个pot,我们里边呢挤了两个容器,对吧?我们看一下,这是二杠二的方式库包controller get pod,然后呢,接下来再问大家一个问题,那我第二个pod我想要访问应该是什么样的库,Controller get pod-oy的给大家先看一下啊,第二个pod的IP是什么?这已经分配好了啊,然后给大家看一下,包括你在可视化界面点进来,这都已经有IP了,来画一个图理解一下,如果我想要访问第二个pod里边的东西,这是我们的这个pod pod,然后呢,我们的这个pod里面呢,现在我们第二个pod呢,起了两个容器,好,我换两个容器,这是第一个容器,第一个容器呢是我们的N几容器,然后呢,第二个容器呢是我们的tomcat容器,那我们把pod称为员工宿舍的话呢,首先访问pod得有一个固定IPK8S集群已经帮我们分。
07:00
配好了对吧,那就是这个IP,我们把这个IP复制过来,把Q8S集群给我们分配的这个IP拿过来,相当于这个pod里边呢,有两个应用,那接下来大家说访问我这个IP到底访问到谁呢?来CUURL,我把这个IP1粘回车,然后呢,它打印的是welcome to engines,为什么我们就得知道,首先你访问的如果是这个这个IP的话,默认你不加端口,就是八零端口,对吧,八零端口,那八零端口呢,其实是NG的端口,所以呢,这个pod里边N几用的是八零,那所以你的这一次访问就访问到的是N几,但是如果说我现在呢,想要访问我们的这个tomcat,那应该咋访,那就应该是我们第二个访问方式,你还是把pod的IP。
08:00
机拿过来叫8080对吧,因为Tom cat呢,默认是开放8080端口的,所以呢,如果你访问还是这个IP,同一个pod的这个8080端口,那呢就会访问到谁访问到我们的这个comcat,好,我们把这个图呢给这一画,这个颜色变一下,我们不妨来看一下我们的这个流程是不是通的curl curl我们的8080,看8080我访问了啊,他说htp status404,虽然404,但是我们看这个是由谁返回到页面,叫阿帕奇Tom k,说明我们Tom k是访问通了,而且呢,我们在这儿给大家再讲一点,就是呢,同一个pod里边的这两个加伙,这两个容器一个占了八零端口,一个占了8080,那如果在在这个容器内部。
09:00
我的N想要访问tomcat用什么?是用pod的IP加8080呢?还是用什么?我们说你两个同时住在一个宿舍,是不是没有必要用你宿舍的IP房啊,相当于你走到楼道找到你的宿舍,然后再进来看他,你就直接拍一拍你下腹的兄弟是不是就行了?所以呢,N访问tomca只需要用127.0.0.1,那我怎么验证这个事情呢?相当于只需要用本地地址啊,因为在同一个pod内,他们共享网络空间,存储等等,共享同一个网络空间,而且呢,共享存储等等等等啊,共享存储就是呢,他们都在一个宿舍嘛,这个宿舍的门牌号是多少,那这两个家伙的访问这两个家伙用的门牌号都是多少,而且呢,因为他们在。
10:00
同一个宿舍,所以不用互相之间打招呼,还带上宿舍IP来,我们把这个事情呢给大家验证一下,来到我的可视化界面,把它可视化界面看我这呢有一个马APP,我呢从这里边进入到N几容器里边,我点一个执行,你看这个执行的时候呢,你可以选,因为这个pod里面有两个容器,你选你进N里边呢,还是进Tom catt那里边,但不管进哪个里边,你看同时都是root ATT买APP,想买APP呢,是一个独立的啊区域,所以我如果进NS里边,我想要访问他们KD,我只需要CUURL干嘛?就是本机的127.0.0.1的8080回车,这就是我们的Tom KT页面,同样的,我到tomcat里边要访问N也是CUURL,只需要本机路径的点0.0.1,冒号八零,因为他们同在一个宿舍里边住着,所以呢,他们拍一拍上下铺的兄弟就完事了。
11:00
这是第一个知识点,第二个知识点大家考虑一下,那如果我新启动了一个pod,这个pod里边能不能运行两个in,或者两个tomcat,或者两个ready,我先画图,大家先思考我的这个里边能不能同时启动两个N,比如第一个NX叫N01,还用的是N镜像,第二个呢叫N几零二,它用的呢,也是N几镜像,能不能搞呢?我们先自己猜想,如果pod里边有两个nnu,因为同一个pod属于同一个网络空间,同一个网络空间你就认为是,你就认为K8S在底层,一个pod呢,就给你开了一个小虚拟机,对吧?那N几零一的话,那它就要占用哪个端口呢?N几零一它是不是也要占八零端口?
12:00
而NGS02呢,也要占八零端口,同一个机器两个不同的应用能开相同的端口吗?相当于明明我给你分配的员工宿舍,每一个端口呢,相当于你上下铺的铺号,但是呢,你这两个呢,你非要挤在一个床铺里边行不行呢?我们来看一下这个事情,我如何验证这个事情,我可以把我们部署多个pod的这个拿过来,我给它稍微改一下,我们自己整过来啊,我改成一个什么呢?我在可视化界面里边,我来创一件这个事,好,我来创,我就在defa的名称空间里边,比如我们就要买APP2,我创建了一个买APP2,然后呢,它里边启动用了两个容器,两个容器呢都叫N镜像,你看我这么一复制,第一个容器用N几镜像,相当于占八零端口,第二个容器还用N几镜像,然后呢,你这个叫N几零二,这个叫N几零一,我如果把这个上传。
13:00
我们看它创建出来会是啥样子,MYAPP2我们来监控一下库,Ctrl get pod好,MYAPP2正在创建,那我们就稍等它创建完成,那稍等一阵呢,我再来看一下get pod诶我发现呢,买APP2是error errorr的原因是什么呢?就是一旦当我们某些pod某些应用启动出现问题,我就一定要用describe描述一下这些应用,我们要排错嘛,对吧,描述一下嘛,APP2到底怎么了?你使用这个命令回车,或者我们说的这个命令啊,不是命令啊,或者你在可视化界面里边,你找到你的这个pod叫马APP2直接点进去,点进去呢,在它的事件里边,这就会有说,说什么呢,我们来看一下吧,这个事件里边呢,啊有下一页,好,我们看下一页,诶这个下下一页蹦哪蹦,蹦这了吧,下一页事件在这啊,他说backoff失败,失败的,呃,原。
14:00
因,诶这还没给原因,没给详细描述吗?那我们就看这吧,我们看我们自己described,自己described described那就是首先我们来看它整个过程,先分把我们整个这个pod分配给啊K8S弄的零二节点,那相当于我们这个应用要在这部署了这个cooper late呢,那零二节点的机器的cooper light就是它厂长负责把这些东西呢下载来,下载来,然后呢,接下来把这镜像都下载了以后呢,开始来启动了,但启动的时候呢,他说我们这个容器启动失败了,那失败的原因大家想原因是啥?就是这两个兄弟是全部挤在一个步子上了,对吧,是不是都占用了八零端口啊,就像同一台机器开了两个应用都开了相同端口,那就是端口被占用,所以呢,这种情况就属于错误,错误为啥他没有打印端口被占用呢?错误端口被占用。
15:00
然后呢,如果这块没打印打印你可以看一下它的日志,看日志里边有没有,那这个日志呢,除了我们用命令行库,Ctrl logs,我们在这呢,也很方便查看,在它这直接看我们的日志,日志日志我们呢,这是NS01,我们看零二的日志,看零二的日志呢,什么a address already in use,我们地址是不是在占用啊,就是我们第二个容器呢,一直起不来,我们pod里边两个家伙,我们说这个pod里边啊,只有我们住在同一宿舍的两个人都OK才行,所以大家伙才是真的好,对吧,所以一个人有问题那就有问题,所以他呢就会一直进行重试,对吧?你看K8S呢,都自己把它重试了三次了,但是呢,还不行,那将来你只要不管K8S集群一直在,它就会永远的陷入城市过程,我们就把这个应用删了啊,给大家说一个注意事项,这就是我们的。
16:00
Po啊,这个删了这个没啥用,记住你的这个pod里边如果要有多个应用,它们一定不能占用相同的端口,哎,不能全部集在一个POS上。
我来说两句