同福

Rancher(k8s)的持久存储卷Volumes(PV/PVC)的使用方法

介绍

介绍

在上一节课里面福哥带着大家学会了使用k8s的负载均衡Load Balancing(LB)发布集群内部的服务的方法,今天我们要讲讲k8s的持久存储卷Volumes(PVC)的使用方法!k8s的PVC是用来将外部的存储媒介挂载到服务的Pod里面的,因为基于容器的Pod随时都有可能会被销毁掉(构建服务、伸缩Pod、更改配置等等),所以当有些服务数据我们想保存下来的时候就会用到k8s的PVC功能了!PVC和数据库不一样,数据库是以数据库、数据表、字段的形式来结构化的存储数据的,而PVC只是单纯的存储目录和文件,相互之间不可替代!

今天福哥就带着大家学习k8s的卷Volumes(PVC)的使用技巧~

环境

镜像版本
rancher/rancher:v2.5.17-rc4
操作系统CentOS 7 x86_64 2009
服务器TFCentOS7x64、TFCentOS7x64Node1
IP192.168.168.68、192.168.168.69
端口9443

使用

PV和PVC

PV就是持久卷英文Persistent Volumes的简写,而PVC是持久卷声明Persistent Volumes Claim的简写。

那么PV和PVC之间是什么关系呢?按OOP的思维去理解PV和PVC就很容易想明白了,PV就是一个持久卷的基类,而PVC是基于这个PV的持久卷声明的继承类,PV是面对一个集群建立的,而PVC是面对一个项目组建立的。然后具体到项目组里的某个服务来说,就是从服务所在的项目组里选一个PVC类,实例化一下这个类,再绑定到自己的Pod上面,就可以使用了!

名称关系所属
PV基类集群
PVC继承PV的扩展类项目组
数据卷实例化PVC的实例服务

持久卷Persistent Volumes

持久卷就是PV,顾名思义就是一个可以持久保存数据的媒介。它可以是宿主机上面的一个目录(HostPath),也可以是网络文件系统共享的一个目录(NFS Share),还可以是第三方提供的可以接入的各种网盘(如:Amazon EBS Disk、Google Persistent Disk等等)。

存储类Storage Class

存储类就是SC,它是第三方提供的一种用于存储数据的服务。它是第三方提供的可以接入的存储服务(如:Amazon EBS Disk、Google Persistent Disk、阿里云OSS等等)

PV和SC的区别

PV是一个具体的资源,使用这个PV的PVC使用的也是这个资源。

SC是一类资源的分配机构,每个使用它的PVC使用的资源都是由这个分配机构提供。

HostPath型PV

创建PV

点击集群名称“tfrancher”进入集群界面,点开“存储”菜单点击里面的“持久卷”菜单进入PV管理界面。

home/topic/2023/0907/21/cc43821440a90d35e85abf015fa9b1a8.png

在TFCentOS7x64Node1上面建立目录/tongfu.net/data/docker/data/tfphp/res/,并且把它做成PV。

mkdir /tongfu.net/data/docker/data/tfphp/res
cd /tongfu.net/data/docker/data/tfphp/res

home/topic/2023/0907/21/6ee3f8a761d3fb39072e58a54aae5201.png

点击“添加PV”按钮创建PV。

home/topic/2023/0907/21/b14dd0a5944c98b6879b771b4b851e1e.png

名称“tfphp-res”,卷插件“HostPath”,容量“10”G,插件配置里面的主机路径“/tongfu.net/data/docker/data/tfphp/res”。

home/topic/2023/0907/21/9f33c4e5d0ca6ef8dc2aa6f2f7d07eb4.png划到最下面点击“保存”按钮完成PV创建。

home/topic/2023/0907/21/dda79794d75ec4ae45ea1754a0838639.png

创建PVC

进入tfrancher的App项目里,点击右边的“PVC”按钮进入PVC管理界面。

home/topic/2023/0907/21/2717e6f5f1d9d6eb3d679a86b35ab4de.png

点击右上角的“添加PVC”按钮创建PVC。

home/topic/2023/0907/21/6e60637f6c6f723b4a9e5ec0d986619e.png名称“tfphp-res”,PV“tfphp-res”。

home/topic/2023/0907/21/bdc460311b79e5facc2e0587300d3a44.png在最下面点击“创建”按钮完成PVC创建。

这个需要等一会儿,才能创建完成!

home/topic/2023/0907/21/312f6fbaac0853104eb86b71d60dac10.png

挂载PVC

现在福哥要把刚刚创建的PVC挂载到tfphp服务上面使用了!

进入工作负载界面,点击tfphp服务右边的三个点里面的“升级”菜单修改tfphp服务的配置。

home/topic/2023/0907/21/4e332c3cb172bf2c28ae188906819504.png

在数据卷配置表单里面点击“添加卷”按钮,在弹出的菜单里面点击“使用现有PVC”菜单。

home/topic/2023/0907/21/1f739707d299b354769f36bd22c4dc0d.png

卷名“res”,PVC选择“tfphp-res”,容器路径“/var/www/res”。

home/topic/2023/0907/21/d99c5e7d16372440bbac1542db57cec9.png

在最下面点击“升级”按钮升级tfphp服务。

测试

测试一下!进入tfphp服务,查看挂载目录/var/www/res下是空的,用touch建立一个README空文件,可以看到容器里有了这个文件。

ls /var/www/res
touch /var/www/res/README
ls /var/www/res

home/topic/2023/0907/21/bed9fd0bd4df403fea190fbe72996ff2.png

再到TFCentOS7x64Node1上的PV目录下查看也是有这个文件的。

ls

home/topic/2023/0907/21/fd8859c63fdebf24dc72175cbdee4f86.png

总结

今天福哥带着大家学习了Rancher(k8s)的持久存储卷Volumes(PVC)的使用方法,通过k8s的PVC可以将宿主机上面的目录挂载到服务的容器里面,也可以将第三方提供的网盘服务或者存储服务挂载到服务的容器里面。