今天对pv和pvc的使用做了进一步实践,也看了一些资料了解了部分机制,这里与大家分享一下。
机制
PersistentVolumeClaimBinder以单例模式运行在master上,它会监控所有pvc并将它们绑定到与请求资源最接近的足量的pv上。也就是说pvc占用的实际存储资源可能会大于请求的资源。k8s不保证底层存储的高可用,需要提供者负责。
NewPersistentVolumeOrderedIndex用来索引不同访问模式的pv并基于容量排序。PersistentVolumeClaimBinder根据pvc的需求来查找索引。
pv是全局的,pvc可以指定namespace。
默认情况下pv使用的回收策略为Retain,此时如果绑定的pvc删除后,pv将处于“Released”状态,需要手动处理pv或自定义回收脚本。
binder运行机制实践
binder是周期性检测并执行绑定操作的,我们可以通过下面的示例来验证。
修改nfs-pv.yaml内容为:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
capacity:
storage: 10Mi
accessModes:
- ReadWriteMany
nfs:
server: localhost
path: