PersistentVolume(PV)
持久卷(PersistentVolume,PV)是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。
PV 持久卷是集群资源,就像节点也是集群资源一样。
PV 持久卷拥有独立于任何使用 PV 的 Pod 的生命周期,管理员可以单独对PV进行增删改查,不受Pod的影响。
和单独配置Volume类似,PV也可以使用NFS、GFS、CEPH等常用的存储后端,并且可以提供更加高级的配置,比如访问模式、空间大小以及回收策略等。
持久卷申领(PersistentVolumeClaim,PVC) 表达的是用户对存储的请求。概念上与 Pod 类似:
Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源
Pod 可以请求特定数量的资源(CPU 和内存);同样 PVC 申领也可以请求特定的大小和访问模式 (例如,可以要求 PV 卷能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载)
PV回收策略
当用户使用完Volume时,可以从API中删除PVC对象,从而允许回收资源。回收策略会告诉PV如何处理该Volume。目前回收策略可以设置为Retain、Recycle和Delete:
保留(Retain)
回收策略 Retain 使得用户可以手动回收资源:
当 PersistentVolumeClaim 对象被删除时,PersistentVolume 卷仍然存在,对应的数据卷被视为"已释放(released)"。
由于卷上仍然存在这前一申领人的数据,该卷还不能用于其他申领。
管理员可以通过下面的步骤来手动回收该卷:
删除 PersistentVolume 对象。与之相关的、位于外部基础设施中的存储资产 (例如 AWS EBS 或 GCE PD 卷)在 PV 删除之后仍然存在。
根据情况,手动清除所关联的存储资产上的数据。
手动删除所关联的存储资产。
如果你希望重用该存储资产,可以基于存储资产的定义创建新的 PersistentVolume 卷对象。
删除(Delete)
对于支持 Delete 回收策略的卷插件,删除动作会将 PersistentVolume 对象从 Kubernetes 中移除,同时也会从外部基础设施(如 AWS EBS 或 GCE PD 卷)中移除所关联的存储资产。
动态制备的卷会继承其 StorageClass 中设置的回收策略, 该策略默认为 Delete。
回收(Recycle)
回收策略 Recycle 已被废弃,取而代之的建议方案是使用动态制备。
PV访问策略
目前支持的访问策略如下:
ReadWriteOnce:可以被单节点以读写模式挂载,命令行中可以被缩写为RWO。
ReadOnlyMany:可以被多个节点以只读模式挂载,命令行中可以被缩写为ROX。
ReadWriteMany:可以被多个节点以读写模式挂载,命令行中可以被缩写为RWX。
ReadWriteOncePod:只能被一个Pod以读写的模式挂载,命令中可以被缩写为RWOP。
虽然PV在创建时可以指定不同的访问策略,但是也要后端的存储支持才行。比如一般情况下大部分块存储是不支持ReadWriteMany的。
PV的状态
在创建PV后,可以通过kubectl get pv查看已经创建的PV的状态:
字段STATUS表示当前PV的状态,会有以下几种状态:
Available:可用,没有被PVC绑定的空闲资源。
Bound:已绑定,已经被PVC绑定。
Released:已释放,PVC被删除,但是资源还未被重新使用。
Failed:失败,自动回收失败。
最后更新于
这有帮助吗?