在docker和K8S中都存在容器是有生命周期的,因此數(shù)據(jù)卷可以實現(xiàn)數(shù)據(jù)持久化。
烏什網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),烏什網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為烏什上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的烏什做網(wǎng)站的公司定做!數(shù)據(jù)卷解決的主要問題:
1.數(shù)據(jù)持久性:當(dāng)我們寫入數(shù)據(jù)時,文件都是暫時性的存在,當(dāng)容器崩潰后,host就會將這個容器殺死,然后重新從鏡像創(chuàng)建容器,數(shù)據(jù)就會丟失。
2.數(shù)據(jù)共享:在同一個Pod中運行容器,會存在共享文件的需求。
數(shù)據(jù)卷的類型:
1.emptyDir
emptyDir數(shù)據(jù)卷類似于docker數(shù)據(jù)持久化的docker manager volume,該數(shù)據(jù)卷初分配時,是一個空目錄,同一個Pod中的容器可以對該容器中的目錄具有執(zhí)行讀寫操作,并且共享數(shù)據(jù)。
場景特點:一個相同的pod,不同的容器,共享數(shù)據(jù)卷
如果容器被刪除,數(shù)據(jù)仍然存在,如果Pod被刪除,數(shù)據(jù)也會被刪除
測試:
**vim emptyDir.yaml**
apiVersion: v1
kind: Pod
metadata:
name: producer-consumer
spec:
containers:
- image: busybox
name: producer
volumeMounts:
- mountPath: /producer_dir#這里的路徑指的是容器內(nèi)的路徑
name: shared-volume#指定本地的目錄名
args:#定義容器運行后,會進行的操作
- /bin/sh
- -c
- echo "hello k8s" > /producer_dir/hello; sleep 30000
- image: busybox
name: consumer
volumeMounts:
- mountPath: /consumer_dir
name: shared-volume
args:
- /bin/sh
- -c
- cat /consumer_dir/hello; sleep 30000
volumes:
- name: shared-volume#這里的值需要與上面Pod的mountPath的name值對應(yīng)
emptyDir: {}#定義數(shù)據(jù)持久化的類型,即表示空目錄
kubectl apply -f emptyDir.yaml #執(zhí)行文件
docker inspect (查看容器的詳細信息):Mount掛載點
可以進入目錄在宿主機查看數(shù)據(jù)。
kubectl get pod -o wide (-w):可以詳細的查看pod信息
加上-w:可以實時查看。并且知道容器運行在那個節(jié)點。
kubectl logs {pod名} consumer可以查看目錄中的數(shù)據(jù)。
根據(jù)測試可以查看節(jié)點上的容器,掛載目錄是否相同。相同則環(huán)境正確??梢詣h除容器查看數(shù)據(jù)是否丟失,在刪除master節(jié)點pod查看數(shù)據(jù)是否還在。
根據(jù)測試,emptyDir數(shù)據(jù)持久化一般只能作為臨時存儲使用。
2.hostPath Volume
1》將Pod所在節(jié)點的文件系統(tǒng)上某一個文件或目錄掛載進容器內(nèi)。
2》類似于docker數(shù)據(jù)持久化的bind mount。如果Pod被刪除,數(shù)據(jù)會保留。相比較emptyDir要好一些,不過一但host崩潰,hostPath也無法訪問了。
3》使用這種數(shù)據(jù)持久化的場景不多,因為會增加Pod與節(jié)點之間的耦合性。
3.Persistent Volume :pv (持久卷) 提前做好的,數(shù)據(jù)持久化的存放目錄。
persistentVolumeClaim: PVC (持久卷使用聲明 | 申請)
pvc是用戶存儲的請求。類似于pod。pod消耗節(jié)點資源,pvc消耗存儲資源。pod可以請求特定級別的資源(cpu,內(nèi)存)。pvc根據(jù)權(quán)限可以請求特定的大小和訪問模式。
基于NFS服務(wù)來做PV:
安裝NFS服務(wù)及rpcbind服務(wù):
1.[root@master?yaml]#?yum?install?-y?nfs-utils?rpcbind??#這里注意三臺都要安裝NFS服務(wù)。
2.[root@master?yaml]#?vim?/etc/exports??
文件中添加/nfsdata??*(rw,sync,no_root_squash)??
4.[root@master?yaml]#?mkdir?/nfsdata??
5.[root@master?yaml]#?systemctl?start?rpcbind??
6.[root@master?yaml]#?systemctl?start?nfs-server.service???
7.[root@master?yaml]#?showmount?-e??
Export?list?for?master:??
/nfsdata?*??
創(chuàng)建PV資源對象:
vim nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: test
spec:
capacity:#給予的容量大小
storage: 1Gi
accessModes:#PV支持的訪問模式
- ReadWriteOnce#這里表示只能以讀寫的方式掛載到單個節(jié)點
persistentVolumeReclaimPolicy: Recycle#pv的回收策略:表示自動清楚數(shù)據(jù)
storageClassName: nfs#定義的存儲類名字
nfs:#這里要和上面定義的存儲類名字一致
path: /nfsdata/pv1#指定NFS的目錄
server: 192.168.1.1#指定NFS服務(wù)器的IP
執(zhí)行nfs-pv.yaml文件:
**`?kubectl?apply?-f?nfs-pv.yaml??`?**
persistentvolume/test?created??
**`?kubectl?get?pv??`**
NAME??????CAPACITY???ACCESS?MODES???RECLAIM?POLICY???STATUS??????CLAIM???STORAGECLASS???REASON???AGE??
test???1Gi????????RWO????????????Recycle?????????**?Available?**??????????nfs?????????????????????7s??
**這里注意STATUS狀態(tài)為Available才能夠使用。**
pv支持的訪問模式:
ReadWriteOnce:訪問模式為只能以讀寫的方式掛載到單個節(jié)點
ReadWriteMany:訪問模式為只能以讀寫的方式掛載到多個節(jié)點
ReadOnlyMany:訪問模式為只能以只讀的方式掛載到多個節(jié)點
PV存儲空間的回收策略:
Recycle:自動清除數(shù)據(jù)。
Retain:需要管理員手動回收。
Delete:云存儲專用。
PV和PVC相互的關(guān)聯(lián):通過的是storageClassName與accessModes
創(chuàng)建PVC:
vim nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test
spec:
accessModes:
- ReadWriteOnce#定義訪問模式,這里必須與Pv定義一致
resources:
requests:
storage: 1Gi#請求容量的大小
storageClassName: nfs#存儲類的名字,必須與pv定義的一致。
運行,并查看PVC和PV:
kubectl?apply?-f?nfs-pvc.yaml???
關(guān)聯(lián)后會看見,Bound:
本文題目:k8s存儲數(shù)據(jù)持久化,emptyDir,hostPath,基-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.rwnh.cn/article48/dscihp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、App開發(fā)、品牌網(wǎng)站建設(shè)、云服務(wù)器、網(wǎng)站設(shè)計、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容