1、PV是什么
PV描述的,是持久化存储数据卷,定义的是一个持久化存储在宿主机上的目录,比如NFS的挂载目录
通常情况下,PV对象是运维人员实现创建在k8s集群里待用的。如下所示
2、PVC
PVC描述的,则是pod所希望使用的持久化存储的属性,常由开发人员创建
3、PV和PVC存在的问题
比如创建pod的时候,系统里并没有合适的pv和定义的pvc,那么意味着容器想要使用的volumn不存在,那么此时pod启动就会报错。而这个时候只能运维人员去配置。而为了解决这个问题,增加了一个volumn Controller来处理,即PersistentVolumnController
4、PersistentVolunController的原理
不断的查看当前每一个pvc,是不是已经处于已绑定状态。如果不是,那么就去绑定
5、storageClass
PV这个对象的创建,是由运维人员完成的,但是在大规模生产环境中,非常麻烦。
所以k8s提供了一套可以自动创建pv的机制,即Dynamic Provisioning。而人工管理pv的方式叫做Static Provisioning,Dynamic Provisioning机制工作的核心,在于一个名为storageClass的API对象。而StorageClass对象的作用,其实就是创建PV的模板。
模板配置好了,k8s就能根据用户提交的pvc,找到一个对应的storageClass,然后k8s调用该storageClass声明的存储插件,插件出需要的PV