00:00
接下来我们来聊一下K8S里边的存储轴象,首先来参考这么一个场景,还是我们这三台机器,我们三台机器上呢,通过各种各样的方式,我们运行了一些pod,而这个pod呢,我们往往有一些数据呢,想要挂载到外边,我们来方便修改,比如我们以前学docker的时候,把NGX的这个HTMMR这个目录挂到外边,这样我们给外边呢放一个NGX的页面,我们内部呢相当于就改变了,所以呢,我们未来每一个pod呢,可能都会有这个需求,那比如我的这个pod,它想把它这个运行的容器内部的杠data塔挂到我们的主机的杠A位置,那我们以后在杠A位置来修改,就相当于是修改pod的杠data目录里边的内容,那其他pod呢也一样,比如我这个pod呢,想把它内部的杠logs,我挂到外边,比如叫杠locks,那剩下pod呢,多多少少他们呢,可能都想挂这个呢,挂team,这个挂hello,这个挂word,然后呢,他们把它。
01:00
用的内容都挂到主机的外边,这是我们以前先不聊K8S,我们用刀块,如果起容器的话,我们就可以这么来做,这样我们起的这个容器越多,我们未来挂的这些东西乱七八糟都在外边,但是呢,用起K8S以后,如果我们还是这种方式来直接挂,将会有面临一个非常严重的问题,举一个例子,我们的这些pod呢,先都这么来挂,但是呢,有一个pod,假设是它这个pod呢,突然发生了故障,然后呢给宕机了,宕机以后呢,K8S感觉到这个pod完蛋了,按照故障转移,K8S呢,再等五分钟以后呢,它就会在别的机器把这个pod是不是再起一份,但是呢,以前我们完蛋了的这个pod,它呢是在三号机器的,它的这个pod挂载的目录杠K是不是在三号机器,但如果呢,它完蛋了以后,将来我在二号机器起一个,那这个目录杠temp,它是不是就映射到二号机器,而三号机器的内容在。
02:00
破机器有吗?那肯定没有,所以呢家就会面临一个问题,当我发生故障转移以后,我的这个pod再要重新挂主机的这个杠ta目录,因为机器都已经变了,所以呢,之前这个机器的杠tip里边的内容已经呢搬家不到这个里边了,所以呢,我们就会产生这个pod呢,虽然给你起了一份新的,但是里边没有数据,如果这个pod是一个MYS,那就完蛋了,对吧,我们就应该把MYS的这个数据啊,我们挂到外边,而且MYSQL呢,就算转移到其他机器,这个数据呢还在,所以我们现在呢,就希望把我们整个这个数据挂载层,先这么凌乱的这一层我们来整理一下,那K8S呢,就把这一层我们乱七八糟的挂在这一层,它可以呢,给我们统一管理起来,形成我们的存储层以后啊,你这个东西想要挂什么,你教你问K8SK8S呢自。
03:00
给给你分配空间,然后呢让挂,包括你就算死了在别的机器再拉起,然后呢,K8S还会让你的pod找你之前挂的那个空间,所以我们就需要有这样的一个能力,K8S呢就将存储层我们抽象出来,这个存储层呢,使用的技术可以有很多,但K8S呢,又不是专业负责存储的,像我们专业的存储层框架,比如有格拉斯FSNFSCFS等这些文件系统,对吧,那你呢,可以随便的挑一层,也就是说K8S啊,在存储层其实是开放的,你用什么技术都行,比如呢,我们以NFS为例,如果我们想要解决那个方案,那我们就可以这么来做,NFS呢叫网络文件系统,所谓的网络文件系统,我们就可以做到这样的效果,比如我在呢,一号机器我开了一个目录叫NFS-data,这个目录呢有50G未来啊,我说大家的pod挂数据的话呢,都给这个目录挂。那NFS的效。
04:00
我就是我在这开一个目录,我为了呢,我一旦我这个机器炸了,别人挂的数据是不是就没有了,那么为了呢,让他数据都在,我在别的其他机器,我也开一个,我们叫bank,这叫备份目录,所谓的备份目录就是它里边的内容跟它里边是一样的,那这样的话,比如我的这个pod,他挂的数据呢,就算我是写到这个目录下的,由于呢,NFS文件系统的意思就是你呢,只要在这个目录下写东西,大家呢都会同步,这样的话呢,就算你炸了,然后呢,我在别的机器再拉起一份,其实别的机器呢,之前你写的数据还在,是同步到这个机器来的,所以呢,你要挂载的话呢,你把这一块的内容,你再跟他来做一个映射,数据还在,这是我们说的NFS文件系统,我们是使用NFS文件系统,将来把我们的存储空间都抽象下来,抽象下来也就说呢,这些呢,我们NFS系统的这。
05:00
接文件夹,它可能呢,锁在各个机器,比如NOTE1 note2 note3,这样就算某一个note炸了,比如NOTE2炸了,我们的故障转移,NOTE2里边的所有pod要在NOTE3里边起,而这个pod里边的数据怎么办呢?因为它的这个挂载,我们以后让K8S管理起来,所有挂载的数据都写在这个目录下,那这样的话呢,这个里边内容只要有变,我们NFS网络文件系统,它们互相会同步起来,就算我们这个完蛋了,然后呢,你在三号机器拉起它里边呢,其实会有二号机器之前的内容,这样的话呢,你的pod起来又会重新用到这样的内容,所以这是我们说的K8S的整个存储抽象,那我们接下来呢,要体验K8S存储抽象的完整内容,我们先要搭一个这个NFS网络文件系统,这个网络文件系统呢,我可以随便指定一个机器为n FS server,比如我K8S的master节点,我呢就把它叫NFS的server。
06:00
然后呢,其他的这个机器,比如我们的NOTE1节点,NOTE2节点,我们可以称为它是NFNFS的这个client客户端,对吧?那接下来呢,我们使用的效果就是客户端呢去同步server的数据,只要server呢发生变化,客户端也会发生变化,这里边的数据呢,只要有改动,我们这里边呢都同步起来,这样的话呢,我们这一个机器上,我们的这些pod挂了,它在别的机器拉起,因为我们数据会同步过来,所以呢它还会找到,所以我们接下来呢,想来搭一个NFS这个网络文件系统,我们再来做剩下的实验,这个网络文件系统的搭建呢,也非常简单,大家照照我们的命令,首先你要完成网络文件系统,首先所有的人都得先安装这个n FS us来,我现在呢,在K8S的三个节点,Master node1和NODE2,我们呢,都让他来执行这个命令,它来执行这个,这个呢也。
07:00
一样,NOE1呢也执行这个命令,NOTE2呢也执行这个命令,好来等待他们呢安装完成,第一个呢安装完了很快,第二个呢也完了,第三个呢也完了,很快,好这三台机器我们都安装上NFS的这个工具以后呢,接下来我们使用这个命令,首先在主节点,我们假设现在master呢要作为我们NFS整个网络文件系统的主节点,我们让别的节点呢同步master的这个数据,那我就可以在主节点上呢运行我这个这个命令,这个命令的意思就是我呢在master节点,我准备暴露NFS-data这个目录芯,就是所有人都能同步我这个目录,而且以非安全的方式读写的方式来进行同步,所以我把这一块的命令呢复制过来,只需要在master的节点执行一下复制,来到master节点回车,好把这个命令一粘以后呢。
08:00
相5MASTER节点是不是要暴露这个文件夹,所以我给master节点呢,就赶紧创建这么一个文件夹,Make克Barr-P,好,那来把这个文件夹呢,按照它的曾经目录创建出来,那创建出来以后呢,接下来只需要使用这两个命令,第一个叫system enable rpc,杠杠no相当于呢,我们启动RPC远程绑定,就是呃,我们想要同步目录的这个服务,我们的杠杠no相当于呢,就是aable加START2合一,我们开机呢也要启动,而且呢,现在就来启动这个RPC棒的服务,当然是在我们主节点,好,我呢现在启动了,接下来还有第二个命令在主间内呢,再来启动NFS服务器,开机启动,而且现在就启动回车,好,我们呢这个就做好了,然后呢,我们可以来检查一下是否是不是配置生效。我们使用这个命令让整。
09:00
的NFS的配置生效回车,然后呢,那这样我们的整个NFS系统我们就出来了,当然我们指的是我们NFS服务器现在呢启动起来,然后呢,我们也可以来export FS检查一下,确定呢,我们NFS服务器是NFS-data,这个目录呢暴露在外边,那接下来呢,我们可以让其他的这个NFS其他的这两个节点呢,作为NFS服务器的客户端节点,所以呢,刚才我们的这一串操作现在在master节点,我们呢暴露了一个目录叫NFS-data,然后呢,接下来我想让其他节点呢,自己来同步这个目录,暴露目录呢是通过这个命令暴露暴露出来的,好,那我就让其他节点来进行同步,那其他节点呢,想要同步也非常简单,因为我呢,其他节点已经安装了NFS工具类了,使用这个命令我们可以来显示一下NFS的服务器。
10:00
哪些东西呢,可以让我们挂载,所以呢,这一块的这个命令,注意改成你自己的IP地址,我们NFS的服务器是master,所以呢,我来把master的IP地址拿过来,它呢应该是172310.4,我使用这个私有网卡的IP地址,私有网络的IP地址,好然后呢,我可以先在其他机器确认一下,对吧,因为呢,我在这个收want杠一意思呢,你这个机器看一下远程的0.4这个机器有哪些东西你可以目录可以同步挂载,我们看到远程机器呢,有n FS data可以挂载,对吧?其他人呢,你要检查一下也一样,这只是一个检查命令,看一下确认一下没问题,好没问题以后呢,接下来我们就来开始挂载,我们呢给每一个人也创建这个目录,比如呢,我们就叫n FS data,当然你目录名叫啥无所谓,我呢现在叫data,那就都叫data,然后注意把这一块的IP地址呢。
11:00
是你的,所以呢,我接下来要做的事就是给每一个这个客户端节点,我也创建出n FS data这个目录,但这个目录你叫ABCDEFG都无所谓,好我创建出来,那相当于呢,现在我的server就是这个master有n FS data目录,而且它暴露出来了,而其他的这两个啊,我们呢,只是把目录呢创建好,我们接下来呢,就要让这两个同步它里边的内容,所以这个同步操作呢,来使用这个命令叫mount-T,就是呢,我将来想要挂载,挂载我们的,我们是使用NFS网络文件系统挂载,我们挂载远程这个服务器,所以这块的写法是我们远程NFS服务器的server地址,然后呢加我们远程服务器的暴露的这个文件夹,然后呢,相当于我把远程服务器的这个文件夹跟我本地的这个文件夹来进行一个同步,所以你上一步这块创建是什么文件夹,那在下边这块呢,你就可以改成。
12:00
你的名字,那我呢就直接来做就行,CTRLC我可以来给大家看一下,在NODE1回RL,好,NODE2我来回车,相当于呢,我这个命令已运行NODE1和NODE2这两个节点呢,就会自己mon更替,那就是挂载同步我们master n FS data里边的内容,那我怎么验证这个事情呢?我可以来到master节点里边CD到n FS data里边,比如呢,我就来一口一个一一,我给它输出到一个A这个文件里边,我们会看到master的n FS data里边会有A这个文件,而且文件内容呢,来家看一下是不是叫一一,那来到NODE1,因为NODE1呢,它也有一个NFS,就是它是不是跟远程进行同步的,所以呢,我看NODE1里边有没有呀,所以我只在master上操作了一下,我们发现诶这个NODE1里。
13:00
那是不是也有这个A,而且内容呢,看一下也没问题,NOTE2我们确认一下也是没问题的,NSA我们这有A,包括呢它的内容也没有问题,甚至于呢,我们去来修改,比如我呢给里边重新追加,追加一个我给A文件里边呢追加222,我来再看一下AA变成了1122,那我们的master变了没变呢?来确认一下M,发现呢,Master跟着变了,NODE1肯定也跟着变,这就是一个典型的网络文件系统,我们的n FS server,这是我们的master节点,有一个文件夹暴露出来,它俩呢进行同步,而且呢,你在任何一台机器对我们同步的这个文件夹里边内容有改动,大家呢都能同步上,我们的server client都能同步上。好我们现在把这个前置的环境搭建好,搭建好以后呢,下一节课来测试我们K8S如何利用我们NFS文件系统来进行挂载。
我来说两句