目录

1 写在前面

2 存储挂载面板

3 存储类型

3.1 Local存储

3.2 Nfs存储

3.3 参考资料

4 存储卷

4.1 创建存储卷-基本信息

4.2 创建存储卷-存储卷设置

4.2.1 Nfs-client(本次笔者使用的)

4.2.2  local

4.2.3 访问模式

4.3 创建存储卷-高级设置

5 存储使用

 5.1 配置

6 测试


1 写在前面

之前我们基于kk安装k8s的时候,我们就已经顺手一起安装了nfs,并配置到k8s了。所以现在问题就很简单了。但是如果之前没有配置到k8s现在想要配置怎么办,不用担心,就按照之前的kk安装k8s流程再走一遍就可以了,原先已经部署好的应用不会受到影响,但是虽然没什么问题,但是还是出问题了,就是原来的应用目录会发生变化,比如作者部署了srs的直播服务,在重新基于kk安装k8s之后,原先的/usr/local/srs/的目录没了。取而代之的是(这段如果看不懂就算了,需要你自己去实操一遍才懂的):

存储挂载面板

先看下存储管理相关的面板和菜单吧

3 存储类型

Kubesphere默认提供了local存储。因为我们自己又给它配置了nfs,因此在存储类型这边,我们可以看到两种存储类型。

但是这两种存储类型是不一样的

3.1 Local存储

Local volume叫做本地存储卷,本地存储卷表示挂载的本地存储设备,如磁盘、分区或目录。就是以某个节点作为存储位置。

3.2 Nfs存储

之前博客,笔者已经解释过:

[基于kk搭建k8s和kubesphere] 5 nfs安装_wltsysterm的博客-CSDN博客https://blog.csdn.net/wltsysterm/article/details/120455447?spm=1001.2014.3001.5501

3.3 参考资料

关于存储相关还可以参考:

存储 - 存储概述 - 《KubeSphere v2.0 使用手册》 - 书栈网 · BookStackhttps://www.bookstack.cn/read/kubesphere-v2.0-zh/storage-volume.md

存储 - 存储卷 - 《KubeSphere v2.0 使用手册》 - 书栈网 · BookStackhttps://www.bookstack.cn/read/kubesphere-v2.0-zh/storage-pvc.md

Persistent Volumes | Kuberneteshttps://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes

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;

测试

在数据库里头随便创建一张表:

 然后重新部署负载:

关闭navicate里头的链接,重新打开链接,查看该表是否存在,如果存在就表示nfs生效了。

其实,因为我们有修改user表的密码策略,所以如果数据已经持久化的话,那么重新部署的话,修改的数据应该不会丢失,那么重新链接数据库不报错,就表示nfs生效了。

现在已经解决了容器化部署数据不能持久化存储的问题了,但是其实往往还有一个配置不能持久化的问题,比如nginx的配置文件,mysql的配置文件,我们经常会做修改,但是配置文件都是跟随镜像走的,我们一旦重新部署就会导致配置也被删除了。这个问题下面讲解的配置中心里头的配置可以解决。

下一篇分享下配置中心

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐