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

 

posted @ 2021-11-30 15:21  cforcnb  阅读(223)  评论(0)    收藏  举报