00:00
好,那基于前面的分析,我们就先来部署my circle。当然无论部署任何中间线,我们应该先做的第一步是去我们的dob里边找到我们这个中间线的镜像。因为在这个镜像描述里边呢,会描述我们这个镜像的一些核心特点,比如它的数据存在哪,它的配置文件怎么做,所以我们所有的部署啊,都是依赖于我们这个导口镜像,好,那这个镜像有了以后呢,我们接下来进入呢部署流程,那们先来分析MYS狗应该是怎么启动的,所有的这个启动其实我们可以来参照官方,呃文档就是镜像的这块描述,我们描述里边首先第一个我们要启动我们一个马SQL实例,比如我们用doer的话,首先得加一个杠一,杠一就是指定指定一个环境变量,这个环境变量呢,是来指定my s root用户密码的,现在我们安装的这个MYSQL,默认root用户是使用密码,使用什么样的密码来进行连接,这是第一个,第二个,比如我们这个MYSQL在部署期间,我们的这些配置文件放在哪,数据存在哪,镜像呢也有描述,比如使用我们MYSQL的自己的配置文件,我镜像里边呢,描述是这样子的,像MYSQL的这个配置文件,它在micro。
01:12
Config ETC my my config里边,而且这个配置文件里边说了,只要呢,是ETC my conf.D这个目录下的所有点con结尾的文件都是作为马S的配置文件,所以其实如果大家以前用doer装过马S,理解过这一块镜像说的这些意思,那么最终呢,就会提炼提炼出一个马S的启动命令。如果我们知道docker怎么启动马S口,其实接下来在K8S上怎么部署,那就非常简单了,比如我们这个docker run-P,首先我们马circle口报六个端口,这一块呢们不用说,因为我们K8S最后的这一块的端口,我们是来做我们的service负载均衡服务的。然后接下来岗位那就是数据挂载,数据挂载呢指的是我们my circlel容器内部的呃,Y Li my circlel这个目录挂载到外边的这一块,当然这是以docker的方式说明呢,这个目录是MYQL的日志目录,然后呢,这个目录下边呢,又有一个挂载,这是MYSQ的数据目录,还有这个目录,这是MYSQL配置文件目录,只要我们把配置文件呢放到这个目录内,是以点。com结尾的就行。然后呢,这个杠一是MYSL默认的root用户密码,所以我们以前啊启动MYS可能是这么来启动的,那我接下来呢,想要在Google s平台上部署,那就应该是这个样子,我们最终经过分析,我们MYS的这个pod pod里边。
02:36
那是我们MYS的容器,这容器肯定使用MYS的官方镜像,然后呢,只不过我们容器启动的时候要指定一个环境变量是MYSL的root password,相当于mysq root用户的密码,然后呢,MYSQ的所有数据是在这个目录下,我们容器内部呢有这个目录,我们把这个目录呢,应该以PVC的方式挂出来和MYS狗的配置文件,只要呢,你放到容器内部的这个目录下,那都行。而配置文件呢,我们最终说在K8S平台里边,中间这样的配置文件,我们可以将配置集以con map的方式做出来,所以我现在来做上两件事,部署MYSQL之前,我先把my circle的con map做出来,我们来到配置中心,如果想要做配置,就在这点点配置点一个创建,我们呢就叫my circle的con-con。
03:30
描述一下,就是my circleql的配置文件,别名呢,也不用写了,我点下一步,然后添加数据,添加数据呢,它是一个KV的方式,而K是什么K呢,大家一定要在这注意,就是未来,我们呢说只要在这个K,在这个目录下有任何一个点conve个结尾的这个文件都会被MYSQL认成它的配置文件,所以啊,我们的这个K我们可以这么来写,我们就要写什么什么点con,嗯,比如按照MYS的官方镜像,后边呢,所有这些结尾的对吧?点con的结尾的都行,比如呢,你叫con fair.con都行,所以我就叫my con吧,比如说未来。
04:16
这一块的K就是如果你以前这个配置文件名叫什么,那这就写什么,而里边的值就是你前在马S配置文件里边的配置的内容的值是什么,那就在这儿写什么,我呢就拿一个我们示例的配置值,把这一块已复制我们MYSQ的配置文件,以前呢,我们可能会写这些,比如设置我们的字符集等等一大堆,我点一个对号,点一个创建,那至此呢,我们在这就创建了一个MYSQ的配置文件,对吧?那相当于我在部署之前先把MYSQ的配置文件我先提取成com map了。当然在部署之前呢,我们再来准备一个叫PVCPVC就是我们的券挂载,我准备要存储MYSQL的数据,我点一个创建,我创建一个MYSQL的,比如我就叫PVCMYSQ的券。
05:07
我们这个MYSQL数据挂载是吧,然后MYSQL真正存的数据就在这,而这个PVC呢,来指定一下,因为我们系统内部有默认的NFS存储类型,然后呢,比如用多大,我这10G8G,比如我写一个5G吧,我们就是测试期间,而且呢我们这个访问模式。单节点读写,多节点读写和,呃,这个是多节点只读和多节点读写,那我们呢,现在使用单节点读写模式,我们有状态服务呢,一般都使用单节点读写,而无状态应用呢是使用多节读写,至于这个原理,我们也是在大厂学院里边讲的,因为我们现在的实战部分,我们先不用考虑这么多,部署起来就行了,可以只记结论,好,我们点一个创建,那现在呢,我们又准备了一个卷,这个卷的状态呢是未挂载,我们未来呢,这个券里边就是保存码字数据的,所以我们要部署一个中间件,我先把它配置文件做出来,未来它的数据要挂载的哪个地方,我先准备出来,准备在这呢就OK了,然后接下来这个券呢,已经是准备就绪了,接下来我在这要部署马S,我就来到工作附在里边,因为我们是马S是中间件,是有状态应用,所以我切到有状态复控器,我点击创建,那接下来相当于要创建一个有状态应用,名字叫什么呢?比如我们就叫MYSQL盘。
06:30
我们就叫his,我们比如就叫上一通的MY,我最好呢,这个起名啊,加一个我们是哪个项目下的这个前缀啊,为的是因为我们库S整个系统里边可能也自带一些中间件,害怕有什么冲突,对吧?当然我们说这个his这块呢,相当于是名称空间隔离了,其实呢,不会有什么冲突,但是呢,我们还是保持一个比较良好的命名习惯,这个是我们的这个my circle my circle。咱们这个应用好,我这一块准备好以后,我来点击下一步。
07:04
因为我要部署my circle是不是得选中MYSQL镜像,所以我在这儿呢,点击添加镜像这块呢,是设置数量相当于MYSQL要启动几份,那们现在呢,可以启动三份五份,现在就启动一份添加镜像,镜像这一块呢,我们自然找我们马SQL的这个docker hi。这一块的位置。MY,比如我们来找一个镜像5.7吧,我们就以这个5.7为例。55735,就这个吧。复制一下。来到库尔这一块,我把剩下的这些命令去掉,5.7.35来回车。这样呢,让他先去docker hi找到我们马S的镜像,如果你自己有私有仓库,你在这儿呢,可以创建你连你私有仓库的账号密密码,然后呢,在这不仅能选doer help也能选你私有仓库了,好,然后呢,我们马SQL的镜像选中以后,让他呢使用默认端口,剩下呢不用改,就点一个使用默认端口。
08:04
接下来呢,我们继续往下,那在这呢,可以给它限制,对吧,我们的这个MYSQL启动占多大,比如资源预留,预留呢,我们不预留,但是我们给一个限制,比如买circle最多呢,占一个G的。不是一个G占一核CPU对吧?一核CPU和最大呢占多少的内存,比如占两个G的内存,我可以呢,在这儿来进行限制,最好呢,别预留,因为一预留的话呢,也很容易导致我们系统里边给这个pod要预留一些东西,给那个要预留一些东西,最后空间就不够了,好,那这一块呢,准备好以后,接下来在可视化界面里边继续往下翻,前面呢,我们相当于是选定了容器,然后继续往下翻,然后呢,往下翻以后呢,有一个叫环境变量,因为我们在这儿按照我们的这个最终的分析,MYSQL启动是不是要指定my SQ root用户密码,包括呢,是在dogb这个镜像里边也说的。My circle1启动呢,你一定要给一个这个杠一这个参数,所以我把这个参数拿来所有的环境变量,那就是在这一块来勾中名叫什么,值叫什么,比如root用户的密码,我呢就叫123456吧,好,我在这儿准备好了,然后呢,接下来在这呢,注意勾上同步主机时区,也就是说未来我们买QL容器里边的时间跟我们主机的时间是一样的,要不然经常会导致你买SQ里边存在这个数据,对吧,假设你数据呢,有一个创建时间是是一个时间戳方式,结果你发现这个创建时间呢,它的这个呃时间跟我们这个主机时间是不对的,所以我。
09:39
很多都是由于没有同步主机时区,所以我们把这个勾中点击一个对号,所以至次我们买circleql的这个镜像就配置好了,我相当于选中了一个镜像,而镜像里边的容器是怎么配的,我们在这之前给大家都挨个来配,容器呢,主要由我们的环境变量同步主机时区,好我这配好以后呢,接下来我就可以下一步了,我点击下一步,下一步呢,我们接下来就要进行挂载,挂载呢我们可以使用下边就要添加存储券,因为我们以前呢,把PVC已经在外面创建好了,创建好呢我们就使用下边,没创建好你也可以点上边那自动创建,所以呢,我现在用下边,我点一个下边我来选择一个我们已经创建好的券,叫马SQPVC,它在这呢,已经给我们展示出来了,如果有更多这个列表里边呢,才会展示更多,我点一个它,我们MYSPVC这个卷呢,我们是以读写的方式挂载容器的哪个路径,按照我们的这个方式,MYS所的所有数据是不是在这个路径。
10:40
所以呢,我们在这儿只需要指定这个位置就行了,这是我们的数据卷存储,你点一个对号,马小狗所有的数据就在这儿,而MYS的配置文件呢,我们再来点一个,专门有一个挂载配置文件,点一个配置文件,配置文件呢,我们以前创建好一个叫mysl con,配置文件呢,我们一般是以只读的方式,我可以挂在挂到里边,而配置文件呢,我们来看一下,配置文件呢,我们是挂载到这个目录下就行了,所以我来在这一块。
11:11
在输的时候,容器内部的路径我就输这个目录,然后呢,接下来他就会把这个配置文件里边,因为我们之前在录的时候,配置文件里边录了一个KK是不是叫MY.con对吧?然后呢就会把这个K,然后呢当成我们这个文件名,最终呢放到这个目录下边,所以呢,它会自动挂载下去,我点一个对号,然后我们的配置文件就会挂载到这个目录里边,嗯,会创建到里边,没问题了,我再来点击下一步,然后呢整个呢就OK了,我点一个创建,那至此呢,我们第一个my circleq的有状态副本集,我就创建出来了,突出来以后呢,它更新中点进来看一下,更新中呢,就是首先它要下载MYSQ的镜像,对吧。包括从这个事件里边,我们这个MYS的这个pod呢被分配啊,已经呢,这个状态呢,已经分配成功了,然后呢,接下来我们就要开始下载镜像,镜像下载好以后呢,就开始创建容器,我们就来稍等一下。
12:11
好,大概呢,等了三分钟左右,因为这是第一次部署要下载马SQ镜,像我们这个MYSQ呢,就部署成功了,包括我们在这儿也可以很方便的看们这个容器日志,就是这一块也打印OK,而且呢,我们在这儿也可以很方便的直接连到我们马SQL容器内部,就相当于我们以前在K8S平台里边哦,Docker里边,对吧,我们要连到容器里边一样,好,我们连进去以后呢,来确认上一件事儿,就是我们买circle的这个配置文件有没有生效,我们仿到ETC下的,因为我们最终的所有配置文件,嗯,按照我们这一次的部署方式,所有的配置文件是挂到ETC my circle con.d这个目录下,所以呢,我就。连进来,进到ETC my circle con.d这个目录,LS,哎,我们会看到这有一个my con这个文件,看my con。
13:06
大家看一下文件内容。来,重新来。看到。看我们的my con回车,然后这一块的内容呢,就是我们之前配的MYSQL配置文件的内容,而且呢,还有一个更好的优点,呃,比如我现在呢,在这儿。如果我来修改了配置文件,我修改了MYSQL的配置文件,比如我在我们的配置中心里边,我点一个配置,这是MYSL配置文件,我哪一天想改了,我在这呢,点一个修改配置文件,这是配置文件的内容,我呢假设呢啊删上几行。我把最后一行叫skip name跳过域名解析,我把这个呢给它删了,点一个更新,如果我们修改了这个配置文件以后呢,接下来等上一阵。它还会同步进去,我们来到我们的工作负载,我们刚才部署了一个有状态副本及满扣,然后呢,我们进入到满S里边。
14:09
来重新看一下CD,到ETC下单my circle。下的con.d这个目录对吧,然后呢,接下来看到一个my con。这块呢,还有对吧,Skype name,那我们就来等一阵吧,看my dear conflict。现在呢,还是有的状态,就再来稍等一下。Can'my config来看,诶大概多久好,现在没有了,我们看到呢,我这一次我们再来看的时候呢,已经没有了最后一行话,所以这个我们修改的这个配置信息会在一段时间以后直接同步到我们这个容器内部。但是呢,如果你的这个容器本身呢,有热更新能力,我们MYSQL是没有热更新的,假如你这个容器呢,本身有热更新能力,感知到配置文件变了,它呢自动重启加载最新的配置,那这就更更爽了。
15:07
而我们现在这种呢,就只能把这个容器先停掉,然后呢再让它启动,比如我们在这儿可以有一个叫重新部署,让他呢给我们重新部署一次。那相当于就把我们最新的配置应用到了,因为最新的配置呢,在外边儿,我们是改掉的东西,让它重新部署一次。在这呢,更新中他给我们重新部署,重新部署呢,就是先删除旧的,然后呢再来启动一个新的。容器创建中,这次启动呢应该会很快,因为两次部署呢,都被调度到NODE1节点了,NODE1节点的镜像是已经下载来的。容器创建中,来看一下容器日志,现在还没有,稍等一阵。大概呢,又等了三分钟,我们的这个就部署好了,而且此次部署的这个肯定用的是我们最新的配置文件启动的,我就直接给大家看到ETC my circle config.D目录下比我们的my config文件,这就是我们最新的配置,那至此我们的这个my circle就有状态副本集就部署到这儿了,但此时呢,我们应用还不能访问我们部署的这个应用,它会产生一个容器组,是我们MYSQL正在运行中的,这个容器们真的想要访问我们需要呢,在这一块服务给他呢,暴露我们可访问的这个服务,而我们的这次部署,它现在呢,已经有一个默认的这个服务了。
16:35
而这个服务的访问方式,我们可以看到外网访问呢,它是now,而是克class IP的方式,所以相当于只能在集群内部来进行访问,那么下节课呢,再来做一个服务,让我们马SQL在集群外部我们访问,这样我可以使用马S客户端连上MYSQL来进行测试。
我来说两句