前面我们有通过hostPath或者emptydir的方式来持久化我们的数据,但是显然我们还需要更加可靠的存储来保存应用的持久化数据,这样容器的重建后,依然可以使用之前的数据,但是存储资源和CPU资源以及内存资源有很大不同,问了屏蔽底层的技术实现细节,kubernetes便引入了pv和pvc两个重要的资源对象来实现对存储的管理。
pv的全称是persistentVolume持久化,是对底层共享存储的一种抽象,pv由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如Ceph,GlusterFs,NFS,hostPath等,都是通过插件机制完成共享存储的对接
pvc的全称是 persistentVolumeClain 持久化pvc是用户存储的一种声明,PVC和pod比较类似,pod消耗的是节点,pvc消耗的是PV资源,pod可以请求CPU和内存,而PVC可以请求特定的存储空间和访问模式,对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用PVC即可
但是通过pvc请求到一定的存储空间也有可能不足以满足应用对于存储设备的各种需求,而且不同的的应用程序对于存储性能的要求可能也不尽相同,比如读写速速,并发性能,为了解决一这个问题,kubernetes进入了一个新的资源storageClass,通过storageClass是定义,管理员可以将存储咨询定义为某种类型的资源,比如快读存储,慢速存储等,用户根据storageClass的描述就可以非常直观的知道各种存储资源的具体特性了,这样就可以根据应用的特性去申请合适的存储资源了,此外stroageClass还可以为我们自动生成PV,免去每次手动创建的麻烦
hostPath </