由於部分圖片顯示問題,附上有道雲筆記的鏈接: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
