溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

發(fā)布時間:2020-08-08 18:02:23 來源:ITPUB博客 閱讀:145 作者:i042416 欄目:云計算

Kubernetes的pod本身是無狀態(tài)的(stateless),生命周期通常比較短,只要出現(xiàn)了異常,Kubernetes就會自動創(chuàng)建一個新的Pod來代替它。

而容器產(chǎn)生的數(shù)據(jù),會隨著Pod消亡而自動消失。

為了實現(xiàn)Pod內(nèi)數(shù)據(jù)的存儲管理,Kubernetes引入了兩個API資源:Persistent Volume(持久卷,以下簡稱PV)和Persistent Volume Claim(持久卷申請,以下簡稱PVC)。

PV是Kubernetes集群中的一種網(wǎng)絡(luò)存儲實現(xiàn),跟Node一樣,也是屬于集群的資源。

PV跟Docker里的Volume(卷)類似,不過會有獨立于Pod的生命周期。

使用kubectl get pv查看列表:

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

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

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

Pod 能夠申請?zhí)囟ǖ馁Y源(CPU和內(nèi)存);PVC能夠申請?zhí)囟ǖ某叽绾驮L問模式,例如可以加載一個讀寫實例或者多個只讀實例,(就是上圖kubectl get pvc返回結(jié)果的Access Mode這一列的值RWO, ROX等等)而無須感知這些實例背后具體的存儲實現(xiàn)。

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

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

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

使用命令kubectl create -f pvc.yaml創(chuàng)建這個yaml文件定義的persistent volume claim:

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

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

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

使用kubectl describe pvc nginx-pvc查看這個persistent volume claim對應(yīng)生成的persistent volume:

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

現(xiàn)在我用命令kubectl cp train.jpg nginx-storage-pod:/usr/share/nginx/html將兩個文件train.jpg和index.html文件拷貝到pod內(nèi)部文件路徑/usr/share/nginx/html下面:

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

現(xiàn)在切換到nginx-storage-pod pod里,在/usr/share/nginx/html目錄下果然發(fā)現(xiàn)了這兩個文件:

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

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

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

創(chuàng)建完這個pod之后,then kubectl exec -ti another ash 進入pod內(nèi)部/usr/share/nginx/html,同樣發(fā)現(xiàn)了index.html和train.jpg.

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法

這個例子說明persistent volume claim能夠用于在多個pod間共享持久化數(shù)據(jù)。
要獲取更多Jerry的原創(chuàng)文章,請關(guān)注公眾號"汪子熙":

通過一個例子學(xué)習(xí)Kubernetes里的PersistentVolumeClaim的用法


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI