[k8s的应用] 5 存储挂载
1 写在前面之前我们基于kk安装k8s的时候,我们就已经顺手一起安装了nfs,并配置到k8s了。所以现在问题就很简单了。但是如果之前没有配置到k8s现在想要配置怎么办,不用担心,就按照之前的kk安装k8s流程再走一遍就可以了,原先已经部署好的应用不会受到影响,但是虽然没什么问题,但是还是出问题了,就是原来的应用目录会发生变化,比如作者部署了srs的直播服务,在重新基于kk安装k8s之后,原先的/u
目录
1 写在前面
之前我们基于kk安装k8s的时候,我们就已经顺手一起安装了nfs,并配置到k8s了。所以现在问题就很简单了。但是如果之前没有配置到k8s现在想要配置怎么办,不用担心,就按照之前的kk安装k8s流程再走一遍就可以了,原先已经部署好的应用不会受到影响,但是虽然没什么问题,但是还是出问题了,就是原来的应用目录会发生变化,比如作者部署了srs的直播服务,在重新基于kk安装k8s之后,原先的/usr/local/srs/的目录没了。取而代之的是(这段如果看不懂就算了,需要你自己去实操一遍才懂的):
2 存储挂载面板
先看下存储管理相关的面板和菜单吧
3 存储类型
Kubesphere默认提供了local存储。因为我们自己又给它配置了nfs,因此在存储类型这边,我们可以看到两种存储类型。
但是这两种存储类型是不一样的
3.1 Local存储
Local volume叫做本地存储卷,本地存储卷表示挂载的本地存储设备,如磁盘、分区或目录。就是以某个节点作为存储位置。
3.2 Nfs存储
之前博客,笔者已经解释过:
3.3 参考资料
关于存储相关还可以参考:
4 存储卷
就是一个用来持久化存储数据的资源对象。
负载的数据默认是存在负载所在的容器里头的,容器一旦销毁数据就一起销毁了。
为了让数据可以持久化,因此我们要给负载建立一个存储卷。
4.1 创建存储卷-基本信息
4.2 创建存储卷-存储卷设置
选择存储的类型。目前有两种nfs-client和local。
两种效果是不一样的:
4.2.1 Nfs-client(本次笔者使用的)
4.2.2 local
4.2.3 访问模式
上面两个存储类型最大的不一样就是访问模式了
ReadWriteOnce — 可以被单个节点以读/写模式挂载。
ReadOnlyMany — 可以被多个节点以只读模式挂载。
ReadWriteMany — 可以被多个节点以读/写模式挂载。
很显然,如果有集群部署的话,必须得用nfs-client,因为要求可以被多个节点操作。
4.3 创建存储卷-高级设置
无需修改,保持默认设置即可。
5 存储使用
存储卷是为负载创建的。
回到负载的详情页面,为负载设置存储卷,这样数据就不会丢失。
5.1 配置
如下:
上面圈起来的三个地方是需要我们配置的,我这边讲解下第三个圈:/var/lib/mysql。这边配置的是要将容器的哪个位置内容持久化到nfs里头去,所以第三个的配置表示要将容器里头的/var/lib/mysql的数据持久化到nfs。
保存配置之后,负载就会重新构建服务了。因为重新部署导致容器里头的数据全部都丢失了,因此这个时候还需要重新按照之前的方法设置下以解决mysql8.x服务访问异常问题:
再在terminal里头输入:
注意如果mysql是部署在虚拟机上输入如下命令:
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
如果mysql是部署在物理机上输入如下命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
6 测试
在数据库里头随便创建一张表:
然后重新部署负载:
关闭navicate里头的链接,重新打开链接,查看该表是否存在,如果存在就表示nfs生效了。
其实,因为我们有修改user表的密码策略,所以如果数据已经持久化的话,那么重新部署的话,修改的数据应该不会丢失,那么重新链接数据库不报错,就表示nfs生效了。
现在已经解决了容器化部署数据不能持久化存储的问题了,但是其实往往还有一个配置不能持久化的问题,比如nginx的配置文件,mysql的配置文件,我们经常会做修改,但是配置文件都是跟随镜像走的,我们一旦重新部署就会导致配置也被删除了。这个问题下面讲解的配置中心里头的配置可以解决。
下一篇分享下配置中心
更多推荐
所有评论(0)