持久化存儲之 PV、PVC、StorageClass


PV介紹:

       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: "/"


PVC介紹:

    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匹配規則:

  • 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
相關文章
相關標籤/搜索