pv的访问模式(accessModes)有3种:
- ReadWriteOnce:可读科写,但支持被单个node挂载
- ReadOnlyMany:可以以读的方式被多个node挂载
- ReadWriteMany:可以以读写的方式被多个node挂载
在cli中,访问模式被简化为:
- RWO - readWriteOnce
- ROX - readOnlyMany
- RWX - readWriteMany
在pvc绑定pv时通常根据俩个条件来绑定,一个时存储大小,另一个时访问模式。
Volume Plugin | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
AWSElasticBlockStore | ✓ | - | - |
Glusterfs | ✓ | ✓ | ✓ |
HostPath | ✓ | - | - |
NFS | ✓ | ✓ | ✓ |
pv的回收策略(persistentVolumeReclaimPolicy):
- Retain:不清理保留数据。即删除pvc或者pv后,在插件上的数据(nfs服务端)不会被删除。这种方式是最常用的,可以避免误删pvc或者pv而造成数据的丢失。
- Recycle:不保留数据。经测试pvc删除后,在nfs服务端的数据也会随机删除。只有hostPath和NFS支持这种方式
- Delete:删除存储资源,AWS EBS, GCE PD, Azure Disk, and Cinder volumes支持这种方式。
删除pvc和pv需要注意的点
删除命令
kubectl delete pv pv-name
kubectl delete pvc pvc-name -n namespace
如果已有deployment挂载了pvc,此时直接删除pvc或者pv的话,status会一直处于Terminating状态,所以删除pv或者pvc正确的顺序是
- 确认deployment时候已挂载该pvc,如果挂载了的话需要删除该pvc,然后重新部署该deployment。
- 重新部署的deploymeny为running状态后,此时可以删除该pvc
- pvc删除后,可以删除pv
网友评论