持久化存储之 PV、PVC、StorageClass

 

PV介绍:

       PersistentVolume(PV)是群集中由管理员配置的一块存储。 它是集群中的资源,就像节点是集群资源一样。 PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。 此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。

        可以通过两种方式配置PV:静态或动态。

静态:

      集群管理员创建了许多PV。它们包含可供群集用户使用的实际存储的详细信息。它们存在于Kubernetes API中,可供使用。

动态:

      当管理员创建的静态PV都无法与PVC匹配时,群集可能会尝试为PVC动态配置卷。此配置基于StorageClasses:PVC必须请求 存储类,并且管理员必须已创建并配置该类,以便进行动态配置。请求该类的声明""有效地禁用了它们自己的动态配置。

 

定义NFS PV 资源(静态):

  1 pv定义如下:
  2 apiVersion: v1
  3 kind: PersistentVolume
  4 metadata:
  5   name: nfs
  6 spec:
  7   storageClassName: manual
  8   capacity:
  9     storage: 1Gi
 10   accessModes:
 11     - ReadWriteMany
 12   nfs:
 13     server: 10.244.1.4
 14     path: "/"

 

PVC介绍:

    PersistentVolumeClaim(PVC)是由用户进行存储的请求。它类似于一个pod。Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)

      虽然PVC允许用户使用抽象存储资源,但是PersistentVolumes(PV)对于不同的问题,用户通常需要具有不同属性(例如性能)。群集管理员需要能够提供各种PersistentVolumes不同的方式,而不仅仅是大小和访问模式,而不会让用户了解这些卷的实现方式。对于这些需求,有StorageClass 资源。

 

 

定义pvc资源:

  1 apiVersion: v1
  2 kind: PersistentVolumeClaim
  3 metadata:
  4   name: nfs
  5 spec:
  6   accessModes:
  7     - ReadWriteMany
  8   storageClassName: manual
  9   resources:
 10     requests:
 11       storage: 1Gi

 

pvc和pv匹配规则:

  • PV 和 PVC 的 spec 字段。比如,PV 的存储(storage)大小,必须满足 PVC的要求。
  • PV 和 PVC 的 storageClassName 字段必须一样。

 

 

StorageClass介绍

        StorageClass为管理员提供了一种描述他们提供的存储“类”的方法。不同的类可能映射到服务质量级别,或备份策略,或者由集群管理员确定的任意策略。Kubernetes本身对于什么类代表是不受任何影响的。这个概念有时在其他存储系统中称为“配置文件”。

 

StorageClass资源

     每个都StorageClass包含字段provisioner,parameters和 reclaimPolicy,当PersistentVolume需要动态配置属于该类时使用的字段。

     StorageClass对象的名称很重要,用户可以如何请求特定的类。管理员在首次创建StorageClass对象时设置类的名称和其他参数,并且在创建对象后无法更新这些对象。

 

 

定义StorageClass资源:

  1 apiVersion: storage.k8s.io/v1
  2 kind: StorageClass
  3 metadata:
  4   name: block-service
  5 provisioner: kubernetes.io/gce-pd
  6 parameters:
  7   type: pd-ssd
posted @ 2019-05-22 07:03  MKY-门可意  阅读(860)  评论(0编辑  收藏  举报