PersistentVolume(PV)是群集中由管理员配置的一块存储。 它是集群中的资源,就像节点是集群资源同样。 PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。 此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。api
能够经过两种方式配置PV:静态或动态。性能
静态:spa
集群管理员建立了许多PV。它们包含可供群集用户使用的实际存储的详细信息。它们存在于Kubernetes API中,可供使用。插件
动态:code
当管理员建立的静态PV都没法与PVC匹配时,群集可能会尝试为PVC动态配置卷。此配置基于StorageClasses:PVC必须请求 存储类,而且管理员必须已建立并配置该类,以便进行动态配置。请求该类的声明""有效地禁用了它们本身的动态配置。server
定义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: "/"
PersistentVolumeClaim(PVC)是由用户进行存储的请求。它相似于一个pod。Pod消耗节点资源,PVC消耗PV资源。Pod能够请求特定级别的资源(CPU和内存)。声明能够请求特定的大小和访问模式(例如,能够一次读/写或屡次只读)blog
虽然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匹配规则:
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