k8s

k8s共享存储概念理解

k8s学习记录

Posted by CHuiL on August 21, 2019

什么是共享存储

k8s对于有状态的容器应用或者对数据需要持久化的应用,不仅需要将容器内的目录挂载到宿主机目录,而且需要更加可靠的存储来保证应用产生的重要数据,以便再容器应用重建之后,仍然可以使用之前的数据。 如果只是单纯的靠挂载到宿主机目录上,那么在某个node宕机之后,pod被重启并调度到其他node上运行,但此时新的node上并没有原来的数据,这就无法保证可以使用到之前的数据。

PersistentVolume(PV)

pv是对底层网络贡献存储的抽象,将共享存储定义为一种“资源”。它共享存储,通过插件式的机制完成共享存储的对接。它与共享存储的具体实现相关,例如GlusterFs,iSCSI,RBD或GCE/AWS公有云提供的共享存储。

PVC

pvc则是用于定义的对于资源(PV)的申请,例如申请的资源大小和访问模式。

StorageClass

提供动态资源供应,实现存储卷按需创建;作为对存储资源的抽象定义,对用户设置的pvc申请屏蔽后端存储的细节,一方面减轻用户对于存储资源细节的关注,另一方面页减轻了管理员手工管理pv的工作。由系统自动完成pv的创建和绑定,实现动态的资源供应。

三者之间的关系可以简单的理解为,pv为存储资源,pvc为pod的资源需求,而storageclass为pv的抽象管理;当我们使用pvc对存储资源进行申请时,由StorageClass来根据申请的类型,大小等自动创建PV资源提供给pod使用。

参考

《Kebernetes权威指南》