您的位置:首页 > 其它

Kubernetes通过Kuboard基于NFS的PersistentVolume

2020-02-13 06:40 113 查看

**

概述

**
与管理计算资源相比,管理存储资源是一个完全不同的问题。为了更好的管理存储,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
  • 点赞
  • 收藏
  • 分享
  • 文章举报
不搬砖的程序员不是好程序员 发布了14 篇原创文章 · 获赞 0 · 访问量 338 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐