K8S 生产实践-12-共享存储-PV、PVC 和 StorageClass

一、为什么需要共享存储?

PV(PersistentVolume) 持久化存储卷

持久卷(PersistentVolume)简称PV,是集群中的一块存储,可以由管理员事先供应。
可以配置NFS、Ceph等常用存储配置,相对于volumes,提供了更多的功能,如生命周期管理、大小的限制。
PV 卷的供应有两种方式:静态供应或动态供应

静态:
集群管理员预先创建许多PV,在PV的定义中能够体现存储资源的特性。

动态:
集群管理员无须预先创建PV,而是通过 StorageClass 的设置对后端存储资源进行描述,标记存储的类型和特性。用户通过创建PVC对存储类型进行申请,系统将自动完成PV的创建及与PVC的绑定。如果PVC声明的Class为空"",则说明PVC不使用动态模式。

file

如上,挂载的nfs的路径为“/tmp”,服务器地址为: 172.22.1.2

PVC (PersistentVolumeClaim) 持久化存储卷声明

file

file

持久卷申领(PersistentVolumeClaim,PVC)表达的是用户对存储的请求。就像Pod消耗Node的资源一样,PVC消耗PV资源。PVC可以申请存储空间的大小(size)和访问模式。

file

由管理员创建PV连接到后端存储,使用人员或管理员创建PVC使用PV资源。

Pod与PVC与PV的关系
file

由一张图说一下PV与PVC的绑定,Pod又是怎么挂载PVC

  • 首先创建一个PV,它的名字是 pv-nfsstorageClassName 名字是nfs-slow(这个名字不唯一,就是说其他PV也可以叫这个名字)
  • 然后创建一个PVC,它的名字是test-pv-claimstorageClassName名字是nfs-slow(PVC绑定PV也是根据这个名字判断,根据上一点说的特性也就是说一个PVC可以绑定多个storageClassName名字是nfs-slow的PV)注意PVC设置的资源大小要等于小于PV。
  • 最后Pod使用的时候创建一个volumes,这个名字是test-pv-storage,这个volumes使用的PVC资源要写PVC的name,也就是 test-pv-claim;等Pod中的容器挂载资源的时候挂载的名字是volumes的name,也就是test-pv-storage。

Pod 使用
file

StorageClass
file

file

file

gluster

Gluster 是一种软件定义的分布式存储,可以扩展到数 PB。它为对象、块和文件存储提供接口。

https://github.com/gluster/glusterfs


相关文章:
持久化存储PV与PVC
PV和PVC

为者常成,行者常至