K8s中的pv&&pvc


由於部分圖片顯示問題,附上有道雲筆記的鏈接:http://note.youdao.com/noteshare?id=76d0d00ddfbb2bcf52e088e048f17543&sub=F0D96251095F4FACAA0F5C699DC46606

K8S中的pv&&pvc

參考:https://www.cnblogs.com/benjamin77/p/9944268.html

1.pv

PersistentVolume (PV) 是外部存儲系統中的一塊存儲空間,由管理員創建和維護。與 Volume 一樣,PV 具有持久性,生命周期獨立於 Pod。

2.pvc

  • PersistentVolumeClaim (PVC) 是對 PV 的申請 (Claim)。PVC 通常由普通用戶創建和維護。需要為 Pod 分配存儲資源時,用戶可以創建一個 PVC,指明存儲資源的容量大小和訪問模式(比如只讀)等信息,Kubernetes 會查找並提供滿足條件的 PV。

  • 有了 PersistentVolumeClaim,用戶只需要告訴 Kubernetes 需要什么樣的存儲資源,而不必關心真正的空間從哪里分配,如何訪問等底層細節信息。這些 Storage Provider 的底層信息交給管理員來處理,只有管理員才應該關心創建 PersistentVolume 的細節信息。

3.pv&pvc&pod

3.1 創建pv

  • 1.capacity 指定 PV 的容量為 1G。
  • 2.accessModes 指定訪問模式為 ReadWriteOnce,支持的訪問模式有:
    • ReadWriteOnce – PV 能以 read-write 模式 mount 到單個節點。
    • ReadOnlyMany – PV 能以 read-only 模式 mount 到多個節點。
    • ReadWriteMany – PV 能以 read-write 模式 mount 到多個節點。
  • 3.persistentVolumeReclaimPolicy 指定當 PV 的回收策略為 Recycle,支持的策略有:
    • Retain – 需要管理員手工回收。
    • Recycle – 清除 PV 中的數據,效果相當於執行 rm -rf /thevolume/*。
    • Delete – 刪除 Storage Provider 上的對應存儲資源,例如 AWS EBS、GCE PD、Azure Disk、OpenStack Cinder Volume 等。
  • 4.storageClassName 指定 PV 的 class 為 nfs。相當於為 PV 設置了一個分類,PVC 可以指定 class 申請相應 class 的 PV。
  • 5.path指定 PV 在 NFS 服務器上對應的目錄。

3.2 創建pvc

PVC 就很簡單了,只需要指定 PV 的容量,訪問模式和 class。

創建pod


與使用普通 Volume 的格式類似,在 volumes 中通過 persistentVolumeClaim 指定使用 mypvc1 申請的 Volume。

3.3 pv的回收

pv的回收,主要通過刪除pvc來實現,未刪除pvc之前,pv的狀態時bound,刪除pvc之后,pv的狀態為available

4. pv的動態供給

前面的例子中,我們提前創建了 PV,然后通過 PVC 申請 PV 並在 Pod 中使用,這種方式叫做靜態供給(Static Provision)。

與之對應的是動態供給(Dynamical Provision),即如果沒有滿足 PVC 條件的 PV,會動態創建 PV。相比靜態供給,動態供給有明顯的優勢:不需要提前創建 PV,減少了管理員的工作量,效率高。

動態供給是通過 StorageClass 實現的,StorageClass 定義了如何創建 PV,下面是兩個例子。

StorageClass standard:

StorageClass slow:

這兩個 StorageClass 都會動態創建 AWS EBS,不同在於 standard 創建的是 gp2 類型的 EBS,而 slow 創建的是 io1 類型的 EBS。不同類型的 EBS 支持的參數可參考 AWS 官方文檔。

StorageClass 支持 Delete 和 Retain 兩種 reclaimPolicy,默認是 Delete。

與之前一樣,PVC 在申請 PV 時,只需要指定 StorageClass 和容量以及訪問模式,比如:

除了 AWS EBS,Kubernetes 支持其他多種動態供給 PV 的 Provisioner,完整列表請參考 https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM