00:00
前面由于我们这个线上的配置,我们在好多微服务里边没加,所以呢,导致微服务呢,有可能经常起不来。改了以后呢,接下来大家重新来到我们这个流水线这儿,我们可以让流水线继续运行,就像以前以前这个过程呢,虽然它部署了,它运行到这了。但是呢,有些部署是失败的,但是大家会看到我们又运行到下一步,这个叫人工卡点,比如我们真正要做什么事,我可以在这儿点点一个继续它就行了,就在这点个终止吧,这就算是有一个流水线完整的运行完了。然后呢,我们现在重新把这个流水线运行一遍,因为我们接下来把所有的生产的配置都已经做过了,重新运行。随便呢给一个。等待它的漫长运行过程,然后呢,我们之前呀,在这儿部署的这些错误了的东西,我们也不用着急,不用删它,这处理超时就处理超时,那下一次的部署又会触发整个的滚动更新过程,我们用到最新的我们的这个镜像。
01:04
好,我们来看我们现在的这个正在队列中,哎,他就开始给我们来运行流水线,等一下。接下来如果大家在这个流水线这等了挺久的,呃,我的在这等了很久,你呢,可以来排一下错,来到我们K8S的master节点。它可以使用这个命令,Cooper controller get pod-A,我们来找所有的pod,我们流水线用的这个pod呢,叫什么的?所以我们来可以在。找po的时候,我们发现呢,这有一个的pod。这个pod呢,我们可以描述一下它酷ctrler这。Tri pod-N。前面呢是名城空间,后面是pod名,它就会告诉我们这个pod到底怎么了,然后呢,这个pod呢,它会给我们打印说非schedule,就是调度不过来了,调度不过来的原因是我们这三个节点呢。
02:00
现在啊,Available就是没有节点可用,说一个节点啊,有我们这个污点,当然我们没讲这个事儿,也就说一个节点呢,你不能用,就是master节点你不能用,然后呢,但是但是呢,Pod不允许,而剩下两个节点说这个内存啊,其实不够了,实际上我们的这个内存是够的库CTRL我们叫top。Pause。这是我们来看所有我们的这个pod占了多大的空间,比如杠A这呢有每一个pod占了多大的空间,包括我们以前部署成的,部署不成的,部署不成的呢,自然在这呢不会有太多的占用,在这几个,这几个里边呢,也有一些占用,当然我们这个内存是够的,我们也可以使用这个检查内存controller叫top notes。来看一下,像我们的NOTE1NOTE2节点,它们的内存占用量也就百分之五六十,大概呢还能剩8g 8G16g左右的内存,所以呢,内存是够的,一旦呢,出现这种情况怎么办呢?大家就把这个流水线就停了,多启动上几次。
03:03
嗯,比如我的这个流水线我停了,19号的这个流水线停了,然后呢,在你的这一块,或者在我们的项目管理里边。这是我们以前部署的这些服务,把这些服务呢,咱也都删了。把这个选择全部我们都删了,点击确定。让他们呢,给我们腾出一些资源,这一块都删了以后呢,呃,这块的资源应该就是啊还是差不多的,或者呢,你直接把你的这个机器内存再往上扩一点,因为我们在开发期间,这个机器呢,内存剩了一半,它就。呃,有时经常频繁的啊,报我们这个调度不上去就内存不够。重新来。流水线呢,我们来让它重新运行。来启动一次新的流水线。这个流水线呢,说我们这个流水线即将初始化,然后开始排队啊,现在流水线就运行啊,就把一些没用的垃圾的东西我们就删掉,删掉以后呢,让他重新再来启动就行了。
04:02
我们来就等待整个流水线的过程,在下一次的这个部署就能成功,因为我们已经把生产环境的所有配置都给它加热类了,我们就等一下。现在呢,是进入到我们这个镜像的并发构建过程了。构建完呢,就是推送,推送呢都比较慢一点。现进入到我们的推送过程看一下。下来整个的这个推送呢,就让他慢慢推。刚才的那个对号呢,他打的有问题。你就让他慢慢推就行。嗯,大概等了几十分钟以后,那我们这个镜像推送完成,接下来又进入到我们的整个部署流程,这些部署流程呢,那就是K8S自己慢慢部署。来到我们的项目里边确认一下。先按这些部署啊,最小副本呢,不可用,这是正常,随便点击一个,如这个网关吧,看它部署的咋样,容器没有,准备就绪没有等等。
05:01
他呢,先给我们来下载镜像,下载完以后呢,没有准备就绪,是因为他在这探针来做检查导致的。我们可以看一下容器日志,这个网关呢,还是正在启动的。等启动全部都准备就绪了,那就可以了。你就等一下。等了大概一分钟,我们这个呢,就算是就绪了。这个日志呢,因为我们线上的这个日志没有放的那么级别小的,所以呢,打印的只是一个最基本的日志,包括我们进到容器里边也没问题,那么这个网关呢,其实就是创建好的。网关创建好以后呢,呃,我们也可以,因为网关它会对外提供一个整个的service服务,我们可以看一下网关对应的服务在这对吧,所以如果我我们来访问这个网关。这个服务的8080其实也是可以访问到数据的,复制一下。我们随便来到一个工作负载里边吧。
06:02
比如旧网关。他既然部署好了,我们进入它容器内。来访问网关对应的这个域名的8080回车,哎,我发现呢,网关给我们返回的这个JS就已经有了,啊没问题,那接下来就来等待其他的整个服务的部署。现在呢,已经部署成了一个网关,其他这个容器没准备就绪,那就等他们准备。大概呢,又等了一段时间,我发现呢,这一块容器一直没有准备就绪。那没有准备就绪呢,肯定是我们发这个探针的时候,我们这个I tra health,肯定我们这个什么东西没部署好。但是这块日志呢又很少,而这一块日志呢,我们可以这么来做。发现呢,每一个应用啊,其实会在它的里边,我随便打开一个应用。会有一个log bank spring插,这是我们进行日志的配置,而这个日志配置呢,在开发环境的情况下,它在这呢可以打印的很详细,在生产环境下呢,会打印错误以及我们这个失败日志,其实也够了,我们至少呢得让它生产环境打印一些错误日志,我们现在呢,连一个错误日志都没有,而生产环境呢,人家在这的标识叫pro,我们生产环境呢叫prod,所以啊,接下来。
07:21
我呢就做一件事情,我把所有微服务的这个日志文件,我重新呢改成prod就行了,然后我把整个项目一提交,那下一节课呢,我把流水线再重新给大家运行一遍。
我来说两句