Volume 提供了很是好的數據持久化方案,不過在可管理性上還有不足。html
拿前面 AWS EBS 的例子來講,要使用 Volume,Pod 必須事先知道以下信息:安全
當前 Volume 來自 AWS EBS。ide
EBS Volume 已經提早建立,而且知道確切的 volume-id。htm
Pod 一般是由應用的開發人員維護,而 Volume 則一般是由存儲系統的管理員維護。開發人員要得到上面的信息:生命週期
要麼詢問管理員。資源
要麼本身就是管理員。開發
這樣就帶來一個管理上的問題:應用開發人員和系統管理員的職責耦合在一塊兒了。若是系統規模較小或者對於開發環境這樣的狀況還能夠接受。但當集羣規模變大,特別是對於生成環境,考慮到效率和安全性,這就成了必需要解決的問題。get
Kubernetes 給出的解決方案是 PersistentVolume 和 PersistentVolumeClaim。kubernetes
PersistentVolume (PV) 是外部存儲系統中的一塊存儲空間,由管理員建立和維護。與 Volume 同樣,PV 具備持久性,生命週期獨立於 Pod。it
PersistentVolumeClaim (PVC) 是對 PV 的申請 (Claim)。PVC 一般由普通用戶建立和維護。須要爲 Pod 分配存儲資源時,用戶能夠建立一個 PVC,指明存儲資源的容量大小和訪問模式(好比只讀)等信息,Kubernetes 會查找並提供知足條件的 PV。
有了 PersistentVolumeClaim,用戶只須要告訴 Kubernetes 須要什麼樣的存儲資源,而沒必要關心真正的空間從哪裏分配,如何訪問等底層細節信息。這些 Storage Provider 的底層信息交給管理員來處理,只有管理員才應該關心建立 PersistentVolume 的細節信息。
Kubernetes 支持多種類型的 PersistentVolume,好比 AWS EBS、Ceph、NFS 等,完整列表請參考 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes
下節咱們用 NFS 來體會 PersistentVolume 的使用方法。
書籍:
1.《天天5分鐘玩轉Kubernetes》
https://item.jd.com/26225745440.html
2.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html
3.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html