PersistentVolume
和 PersistentVolumeClaim
。PersistentVolume
(PV) 是集群中管理员分配的一块存储。它属于集群中的资源,如同节点是集群中的资源一样,它不属于任何 Namespace。PVs 是存储卷插件,它拥有生命周期,但是独立于那些使用 PV 的 Pod 生命周期。支持 NFS、iSCSI 或者云供应商存储系统。PersistentVolumeClaim
(PVC) 用于用户请求存储资源。它类似 Pod,Pod 消耗节点资源,而 PVC 消耗 PV 资源。Pods 可以请求特定级别的资源(CPU 和 内存),PVC 可以请求特定的存储大小和访问模式(如可以一次读写挂载或只读模式)。storageClassName
字段指定 StorageClass 的名称来请求特定 class。只有所请求 class 的 PVs 才能绑定到请求指定相同 class 的 PVCs。volume.beta.kubernetes.io/storage-class
替代 storageClassName
。当前 annotation 依然生效,不过在后续版本会被废弃。PersistentVolume
,PersistentVolumeClaim
可以通过 storageClassName
指定 StorageClass 的名字。只有同 PVC 相同 storageClassName
的 PVs,才可以绑定到此 PVC。PersistentVolumeClaim
没有匹配到管理员创建的 PVs 时,集群可能会尝试为 PVC 专门配置动态卷。这种动态提供基于 StorageClasses
:PVC 请求 storage class ,storage class 由管理员创建和配置以达到动态提供的目的。DefaultStorageClass
admission controller。确认 DefaultStorageClass
在 --enable-admission-plugins
逗号分隔的参数列表中。--enable-admission-plugins
,而 1.9.x 及以下版本为 --admission-control
。PersistentVolumeClaim
情况下,主控制器中的控制回环监视新的 PVCs,并匹配 PV(如果能匹配到),然后绑定它们在一起。如果一个 PV 动态提供一个新的 PVC,那么该 PV 总是会绑定此 PVC。一旦绑定之后,无论是如何绑定的,PersistentVolumeClaim
绑定都是独占的,PVC 到 PV 绑定是一对一映射的。persistentVolumeClaim
调度和访问他们声明的 PVs。PersistentVolume
回收策略定义集群在 PVC 释放后如何处理,当前支持保留、回收或者删除。Retain
回收策略允许手动回收资源,当 PersistentVolumeClaim
删除后,PersistentVolume
仍然存在并处于 "Released" 状态。因为之前声明的数据仍然存在卷上,PV 依然不能被其它 PVC 绑定。管理员可以通过以下操作回收卷:PersistentVolume
。删除后,关联的存储在外部基础设施(例如 AWS EBS,GCE PD,Azure Disk 或者 Cinder 卷)依然存在PersistentVolume
Delete
回收策略的卷插件,删除会移除 PersistentVolume
,以及外部关联的存储资源,如 AWS EBS、GCE PD、Azure Disk 或者 Cinder 卷。 StorageClass
默认的回收策略为 Delete
,管理员应该根据用户的期望配置该选项,否则需要更新 PV 策略 Change the Reclaim Policy of a PersistentVolume。Recycle
回收策略,会自动清理数据并使其可以被其它新的声明使用。(当前只有 NFS 和 HostPath 支持回收)Recycle
回收策略已经被废弃,推荐使用动态供应代替(即 StorageClass
)