Kubernetes的pod本身是無(wú)狀態(tài)的(stateless),生命周期通常比較短,只要出現(xiàn)了異常,Kubernetes就會(huì)自動(dòng)創(chuàng)建一個(gè)新的Pod來(lái)代替它。
創(chuàng)新互聯(lián)建站專注于江州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供江州營(yíng)銷型網(wǎng)站建設(shè),江州網(wǎng)站制作、江州網(wǎng)頁(yè)設(shè)計(jì)、江州網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造江州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供江州網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
而容器產(chǎn)生的數(shù)據(jù),會(huì)隨著Pod消亡而自動(dòng)消失。
為了實(shí)現(xiàn)Pod內(nèi)數(shù)據(jù)的存儲(chǔ)管理,Kubernetes引入了兩個(gè)API資源:Persistent Volume(持久卷,以下簡(jiǎn)稱PV)和Persistent Volume Claim(持久卷申請(qǐng),以下簡(jiǎn)稱PVC)。
PV是Kubernetes集群中的一種網(wǎng)絡(luò)存儲(chǔ)實(shí)現(xiàn),跟Node一樣,也是屬于集群的資源。
PV跟Docker里的Volume(卷)類似,不過(guò)會(huì)有獨(dú)立于Pod的生命周期。
使用kubectl get pv查看列表:
而PVC是用戶的一個(gè)請(qǐng)求,跟Pod類似。Pod消費(fèi)Node的資源,PVC消費(fèi)PV的資源。
Pod 能夠申請(qǐng)?zhí)囟ǖ馁Y源(CPU和內(nèi)存);PVC能夠申請(qǐng)?zhí)囟ǖ某叽绾驮L問(wèn)模式,例如可以加載一個(gè)讀寫實(shí)例或者多個(gè)只讀實(shí)例,(就是上圖kubectl get pvc返回結(jié)果的Access Mode這一列的值RWO, ROX等等)而無(wú)須感知這些實(shí)例背后具體的存儲(chǔ)實(shí)現(xiàn)。
我們來(lái)看一個(gè)具體的PVC實(shí)例,名稱為nginx-pvc:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-pvc spec: storageClassName: default accessModes: - ReadOnlyMany resources: requests: storage: 1Gi
使用命令kubectl create -f pvc.yaml創(chuàng)建這個(gè)yaml文件定義的persistent volume claim:
然后定義一個(gè)pod,消費(fèi)這個(gè)名為nginx-pvc的persistent volume claim:
使用kubectl describe pvc nginx-pvc查看這個(gè)persistent volume claim對(duì)應(yīng)生成的persistent volume:
現(xiàn)在我用命令kubectl cp train.jpg nginx-storage-pod:/usr/share/nginx/html將兩個(gè)文件train.jpg和index.html文件拷貝到pod內(nèi)部文件路徑/usr/share/nginx/html下面:
現(xiàn)在切換到nginx-storage-pod pod里,在/usr/share/nginx/html目錄下果然發(fā)現(xiàn)了這兩個(gè)文件:
接下來(lái)我定義了另一個(gè)pod,同樣適用nginx-pvc這個(gè)PVC:
創(chuàng)建完這個(gè)pod之后,then kubectl exec -ti another ash 進(jìn)入pod內(nèi)部/usr/share/nginx/html,同樣發(fā)現(xiàn)了index.html和train.jpg.
這個(gè)例子說(shuō)明persistent volume claim能夠用于在多個(gè)pod間共享持久化數(shù)據(jù)。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":