- 需求
在 OpenShift 运行应用,难免存在有持久化数据需求的应用,这时候就需要用上 PV 和 PVC 了,简单一点的用法就是使用 NFS 来给多个 POD 共享数据,NFS的缺点也很明显,大量写的情况下,性能很差,不过目前客户这里的场景而言,已足够了。
- 问题
有时候存在这样的情况,因为应用数量不确定,后期也会增加,为了避免每次新增一个应用(前提是该应用有持久化数据需求)就需要申请一个NFS盘,客户一次性给了一个很大的NFS盘,比如200G,我们在NFS盘内进行规划,如下所示:
App-nfs/
|-- AppA
|-- AppB
|-- AppC
|-- AppD
`-- AppE
- 当在目录内规划好后,就可以创建PV了,接下来我们创建个20G PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: test1-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteMany
nfs:
path: /vol/App-nfs/AppA
server: 172.16.37.3
persistentVolumeReclaimPolicy: Recycle
- 也创建个pvc,申请20G空间
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test1
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
- 接下来将pvc进行mount到任意应用中的一个目录下,然后通过df -h可以看到该目录的大小为200G,而不是pv和pvc定义的20G,为了验证是否能够正常写超过20G的内容,我通过dd命令创建了100G的文件,确实没什么问题,可以使用超过20G的空间。
- 以上的实验说明了pv和pvc的声明及限制对于共享一块NFS盘没有作用,最终的可用大小就是NFS盘本身,这种使用方式在某种程度上说确实简便基础设施管理员的资源申请,但是存在的不确定因素太多了,如果某个应用将NFS盘空间使用完了,那其他应用就没法写入了,只能再去向管理申请扩大NFS盘的大小了;但是在可控可预期的环境中,比如开发测试环境,或者几乎没什么数据的业务上,确实是可以这样使用的。
网友评论