PV和PVC
使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用,kubernetes引入PV和PVC两种资源对象。I
PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。
PVC (Persistent Volume Claim)是持久卷声明的意思,是用户对于存储需求的一种声明。换句话说,PVC其实就是用户向kubernetes系统发出的—种资源需求申请。
使用了PV和PVC之后,工作可以得到进—步的细分:
-
存储:存储工程师维护
-
PV: kubernetes管理员维护
-
PVC: kubernetes用户维护
-
存储类型
底层实际存储的类型,kubernetes支持多种存储类型,每种存储类型的配置都有所差异
-
存储能力(capacity)
目前只支持存储空间的设置( storage=1Gi ),不过未来可能会加入IOPS、吞吐量等指标的配置
-
访问模式(accessModes)
用于描述用户应用对存储资源的访问权限,访问权限包括下面几种方式:
-
ReadWriteOnce (RWO) :读写权限,但是只能被单个节点挂载
-
ReadOnlyMany (ROX) :只读权限,可以被多个节点挂载
-
ReadWriteMany (RWX) :读写权限,可以被多个节点挂载
需要注意的是,底层不同的存储类型可能支持的访问模式不同
-
回收策略 (persistentVolumeReclaimPolicy)
当PV不再被使用了之后,对其的处理方式。目前支持三种策略:
-
Retain(保留)保留数据,需要管理员手工清理数据
-
Recycle (回收)清除PⅣV中的数据,效果相当于执行rm -rf /thevolume/*
-
Delete(删除)与PV相连的后端存储完成volume的删除操作,当然这常见于云服务商的存储服务
需要注意的的是,底层不同的存储类型可能支持的回收策略不同
-
存储类别
PV可以通过storageClassName参数指定一个存储类别
- 具有特定类别的PV只能与请求了该类别的PVC进行绑定。
- 未设定类别的PV则只能与不请求任何类别的PVC进行绑定
- 状态(status)
一个PV的生命周期中,可能会处于4中不同的阶段:
- Available (可用):表示可用状态,还未被任何PVC绑定
- Bound (已绑定):表示PV已经被PVC绑定
- Released (已释放)︰表示PVC 被删除,但是资源还未被集群重新声明
- Failed(失败)︰表示该PV的自动回收失败
实验:
使用NFS作为存储,来演示PV的使用,创建3个PV,对用的NFS中的3个暴露的路径
准备环境
#创建目录
mkdir /data/{
pv1,pv2,pv3} -pv
#暴露服务
cat /etc/exports
/