Kubernetes通过Kuboard基于NFS的PersistentVolume

**

概述

**
与管理计算资源相比,管理存储资源是一个完全不同的问题。为了更好的管理存储,Kubernetes 引入了 PersistentVolume 和 PersistentVolumeClaim 两个概念,将存储管理抽象成如何提供存储以及如何使用存储两个关注点。

PersistentVolume(PV 存储卷)是集群中的一块存储空间,由集群管理员管理、或者由 Storage Class(存储类)自动管理。PV(存储卷)和 node(节点)一样,是集群中的资源(kubernetes 集群由存储资源和计算资源组成)。PersistentVolumeClaim(存储卷声明)是一种类型的 Volume(数据卷),PersistentVolumeClaim(存储卷声明)引用的 PersistentVolume(存储卷)有自己的生命周期,该生命周期独立于任何使用它的容器组。PersistentVolume(存储卷)描述了如何提供存储的细节信息(NFS、cephfs等存储的具体参数)。

PersistentVolumeClaim(PVC 存储卷声明)代表用户使用存储的请求。Pod 容器组消耗 node 计算资源,PVC 存储卷声明消耗 PersistentVolume 存储资源。Pod 容器组可以请求特定数量的计算资源(CPU / 内存);PersistentVolumeClaim 可以请求特定大小/特定访问模式(只能被单节点读写/可被多节点只读/可被多节点读写)的存储资源。

根据应用程序的特点不同,其所需要的存储资源也存在不同的要求,例如读写性能等。集群管理员必须能够提供关于 PersistentVolume(存储卷)的更多选择,无需用户关心存储卷背后的实现细节。为了解决这个问题,Kubernetes 引入了 StorageClass(存储类)的概念

**

存储卷和存储卷声明的关系

**
存储卷和存储卷声明的关系如下图所示:

PersistentVolume 是集群中的存储资源,通常由集群管理员创建和管理
StorageClass 用于对 PersistentVolume 进行分类,如果正确配置,StorageClass 也可以根据 PersistentVolumeClaim 的请求动态创建 Persistent Volume
PersistentVolumeClaim 是使用该资源的请求,通常由应用程序提出请求,并指定对应的 StorageClass 和需求的空间大小
PersistentVolumeClaim 可以做为数据卷的一种,被挂载到容器组/容器中使用
在这里插入图片描述

存储卷声明的管理过程

PersistantVolume 和 PersistantVolumeClaim 的管理过程描述如下:

下图主要描述的是 PV 和 PVC 的管理过程,因为绘制空间的问题,将挂载点与Pod关联了,实际结构应该如上图所示:

Pod 中添加数据卷,数据卷关联PVC
Pod 中包含容器,容器挂载数据卷

在这里插入图片描述

**

实际操作如下

**

1.部署NFS服务器
在NFS主机上部署NFS

yum install -y nfs-utils   #安装NFS
vim /etc/exports           #创建 exports 文件,文件内容如下
/nfs/data/ *(insecure,rw,sync,no_root_squash)
#以下命令为启动NFS服务过程
mkdir  -p /nfs/data/ 
systemctl enable rpcbind
systemctl enable nfs-server

systemctl start rpcbind
systemctl start nfs-server
exportfs -r

2.在集群机器内验证NFS服务器是否成功搭建

showmount -e    192.168.2.42      # ip替换为你的NFS机器ip  

在这里插入图片描述
3.登陆到Kuboard管理界面创建命名空间
在这里插入图片描述
在这里插入图片描述
2.创建存储类StorageClass
返回到Kuboard首页
在这里插入图片描述
这里解释两点
1.回收策略 Reclaim Policy
由 StorageClass 动态创建的 PersistentVolume 将使用 StorageClass 中定义的回收策略。可选项有:
回收后删除 Delete
回收后保留 Retain

同一 StorageClass 中,手动创建的 PersistentVolume,将使用创建时手动指定的回收策略。

2.存储卷绑定模式 Volume Binding Mode
StorageClass 根据存储卷绑定模式的选项,确定何时执行 存储卷与存储卷声明的绑定、何时执行动态存储卷提供(动态创建存储卷)。可选项有:
即刻绑定 Immediate
存储卷声明创建后,立刻动态创建存储卷并将其绑定到存储卷声明。
首次使用时绑定 WaitForFirstConsumer
直到存储卷声明第一次被容器组使用时,才创建存储卷,并将其绑定到存储卷声明。

在这里插入图片描述
3.创建PV/PVC
进入到刚刚创建的命名空间test内

在这里插入图片描述
其读写模式对应于yaml文件下accessModes
ReadWriteOnce – PV 能以 read-write 模式 mount 到单个节点。
ReadOnlyMany – PV 能以 read-only 模式 mount 到多个节点。
ReadWriteMany – PV 能以 read-write 模式 mount 到多个节点。

可以看到在这里插入图片描述
pv/pvc均已创建,对应nfs目录下也已经创建文件夹
在这里插入图片描述
4.创建项目并挂载PV
在这里插入图片描述
在这里插入图片描述
基本信息随便填了一个,反正只是做一下示例

添加数据卷 Volume
在这里插入图片描述
添加挂载点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上保存创建即可

**

5.测试

**
可以发现刚刚创建的目录已经生成,因为容器未对PV进行操作,里面为空
在这里插入图片描述
进入容器内bash
在这里插入图片描述
可以看到,挂载的PV已经显示
在这里插入图片描述
我们进入文件夹创建个文件
在这里插入图片描述
对应的NFS目录下也已经生成
在这里插入图片描述

删除容器在观察PV是否正常挂载
在这里插入图片描述

删除后会自动重启容器,重新进入容器bash查看
在这里插入图片描述

以上概念类的内容转自kuboard官网,官网中对整个PV的讲解不是很详细,故做补充,若有错误,请指正

https://kuboard.cn/learning/k8s-intermediate/persistent/volume.html#%E6%95%B0%E6%8D%AE%E5%8D%B7%E6%A6%82%E8%BF%B0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值