概念:
PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。
PV 定义了后端存储以及其他的存储参数。用来配置存储的。只关心后端存储。
pv 的状态:
Available(可用)-- PV是一个空闲资源,尚未绑定到任何pvc;
Bound(已绑定)-- PV已经绑定到pvc;
Released(已释放)-- 所绑定的pvc已被删除,但是资源尚未被集群回收;
Failed(失败)-- PV自动回收操作失败。
pv 的回收策略:
Retain(保留)- 保留数据,需要管理员手工清理数据,pvc删除以后不会删除数据,pv会变成Released状态,无法使用。 需要手动删除重建。手动删除pv不会清除数据。 或者编辑pv,把claimRef 删除。
Recycle(回收)- 清除 PV 中的数据,效果相当于执行 rm -rf /thevoluem/*,pvc删除,数据清理完毕以后Pv会自动恢复到可用状态。
Delete(删除)- 与 PV 相连的后端存储完成 volume 的删除操作,当然这常见于云服务商的存储服务,比如 ASW EBS。删除pv,pv连接的卷也会自动删除。 自动供给的NFS使用的是Delete,作用是删除NFS根目录下的卷目录。手动创建的不能使用Delete,缺少删除卷的插件。
不过需要注意的是,目前只有 NFS 和 HostPath 两种类型支持回收策略。当然一般来说还是设置为 Retain 这种策略保险一点。
注意:目前只有NFS 和 HostPath 支持Recycle, AWS EBS, GCE PD, Azure Disk, and Cinder volumes 只支持Delete.
pv AccessModes 访问模式:(只有相同访问模式的PV,PVC才能绑定)
AccessModes 是用来对 PV 进行访问模式的设置,用于描述用户应用对存储资源的访问权限,访问权限包括下面几种方式:
ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
ReadOnlyMany(ROX):只读权限,可以被多个节点挂载
ReadWriteMany(RWX):读写权限,可以被多个节点挂载
注意:一些 PV 可能支持多种访问模式,但是在挂载的时候只能使用一种访问模式,多种访问模式是不会生效的。
在CLI中,访问模式缩写为:
RWO-ReadWriteOnce
ROX-ReadOnlyMany
RWX-ReadWriteMany
PV 作为存储资源,主要包括存储能力、访问模式、存储类型、回收策略等关键信息
cat >> pv.yaml << EOF
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
storageClassName: manual # 存储的类别
capacity: # 存储容量
storage: 2Gi
accessModes: # 访问模式
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete # 回收策略
nfs:
path: /data/volume/v1
server: 192.168.200.3