kubernetes中持久化存储之 PV、PVC、StorageClass
PV
Persistent Volume,持久化存储卷。它是用来描述或者说用来定义一个存储卷的,这个通常都是有运维或者数据存储工程师来定义。比如下面我们定义一个NFS类型的PV:
apiVersion: v1
kind: PersistentVolume
metadata: # PV建立不要加名称空间,因为PV属于集群级别的
name: nfs-pv001 # PV名称
labels: # 这些labels可以不定义
name: nfs-pv001
storetype: nfs
spec: # 这里的spec和volumes里面的一样
storageClassName: normal
accessModes: # 设置访问模型
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
capacity: # 设置存储空间大小
storage: 500Mi
persistentVolumeReclaimPolicy: Retain # 回收策略
nfs:
path: /work/volumes/v1
server: stroagesrv01.contoso.com
PVC
Persistent Volume Claim,也就是持久化存储声明。它是用来描述希望使用什么样的或者说是满足什么条件的存储。开发人员使用这个来描述该容器需要一个什么存储。比如下面使用NFS的PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc001
namespace: default
labels: # 这些labels可以不定义
name: nfs-pvc001
storetype: nfs
capacity: 500Mi
spec:
storageClassName: normal
accessModes: # PVC也需要定义访问模式,不过它的模式一定是和现有PV相同或者是它的子集,否则匹配不到PV
- ReadWriteMany
resources: # 定义资源要求PV满足这个PVC的要求才会被匹配到
requests:
storage: 500Mi # 定义要求有多大空间
StorageClass
PV和PVC模式是需要运维人员先创建好PV,然后开发人员定义好PVC进行一对一的Bond,但是如果PVC请求成千上万,那么就需要创建成千上万的PV,对于运维人员来说维护成本很高,Kubernetes提供一种自动创建PV的机制,叫StorageClass,它的作用就是创建PV的模板。
概括
存储管理是集群管理中的重要一环,k8s中的存储单元是pv,由pvc管理。但是手动创建pv和pvc比较麻烦,这时候就出现了可以动态、自动创建pv的storageclass。
===================================
抄录来源:1、https://www.cnblogs.com/rexcheny/p/10925464.html
2、https://zhuanlan.zhihu.com/p/104555373
3、https://www.jianshu.com/p/ae06119db602

浙公网安备 33010602011771号