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