通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

i042416發表於2018-11-27

Kubernetes的pod本身是無狀態的(stateless),生命週期通常比較短,只要出現了異常,Kubernetes就會自動建立一個新的Pod來代替它。

而容器產生的資料,會隨著Pod消亡而自動消失。

為了實現Pod內資料的儲存管理,Kubernetes引入了兩個API資源:Persistent Volume(持久卷,以下簡稱PV)和Persistent Volume Claim(持久卷申請,以下簡稱PVC)。

PV是Kubernetes叢集中的一種網路儲存實現,跟Node一樣,也是屬於叢集的資源。

PV跟Docker裡的Volume(卷)類似,不過會有獨立於Pod的生命週期。

使用kubectl get pv檢視列表:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

而PVC是使用者的一個請求,跟Pod類似。Pod消費Node的資源,PVC消費PV的資源。

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

Pod 能夠申請特定的資源(CPU和記憶體);PVC能夠申請特定的尺寸和訪問模式,例如可以載入一個讀寫例項或者多個只讀例項,(就是上圖kubectl get pvc返回結果的Access Mode這一列的值RWO, ROX等等)而無須感知這些例項背後具體的儲存實現。

我們來看一個具體的PVC例項,名稱為nginx-pvc:

kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-pvc spec: storageClassName: default accessModes: - ReadOnlyMany resources: requests: storage: 1Gi

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

使用命令kubectl create -f pvc.yaml建立這個yaml檔案定義的persistent volume claim:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

然後定義一個pod,消費這個名為nginx-pvc的persistent volume claim:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

使用kubectl describe pvc nginx-pvc檢視這個persistent volume claim對應生成的persistent volume:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

現在我用命令kubectl cp train.jpg nginx-storage-pod:/usr/share/nginx/html將兩個檔案train.jpg和index.html檔案拷貝到pod內部檔案路徑/usr/share/nginx/html下面:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

現在切換到nginx-storage-pod pod裡,在/usr/share/nginx/html目錄下果然發現了這兩個檔案:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

接下來我定義了另一個pod,同樣適用nginx-pvc這個PVC:

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

建立完這個pod之後,then kubectl exec -ti another ash 進入pod內部/usr/share/nginx/html,同樣發現了index.html和train.jpg.

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法

這個例子說明persistent volume claim能夠用於在多個pod間共享持久化資料。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

通過一個例子學習Kubernetes裡的PersistentVolumeClaim的用法


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2221872/,如需轉載,請註明出處,否則將追究法律責任。

相關文章