最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

k8s 持久化存儲

2023-07-13 23:31 作者:阿兵云原生  | 我要投稿

我們繼續(xù)來查看 k8s 的卷,上一次我們分享了將磁盤掛載到容器中,empyDir 和 gitRepo 都是會隨著 pod 的啟動而創(chuàng)建,隨著 pod 的刪除而銷毀

那么我們或許會有這樣的需求,期望在 pod 上面讀取節(jié)點的文件或者使用節(jié)點的文件系統(tǒng)來訪問節(jié)點的設(shè)備

這個時候,我們就可以讓 hostPath 出馬了

hostPath

咱們來看圖說話

hostPath 卷會指向節(jié)點文件系統(tǒng)上的特定文件或者目錄,我們同時在一個節(jié)點上運行并在 hostPath 卷中使用相同的路徑的 pod ,就可以看到相同的文件了

使用 hostPath 卷的時候,哪怕我們刪除 pod ,hostPath 卷的內(nèi)容也不會被刪除,若現(xiàn)在啟動了一個 pod,也會發(fā)現(xiàn)之前被刪除 pod 留下來的數(shù)據(jù)(這里必須是在同一個工作節(jié)點上的 pod

發(fā)現(xiàn)問題

通過上面的 hostPath 的介紹,我們知道 hostPath 卷的數(shù)據(jù)是放在工作節(jié)點上的,若是節(jié)點 A 上的 pod 被重啟,重啟后的 pod 跑到 節(jié)點 B 去了,那么新的 pod 是沒有版本訪問到之前 pod 產(chǎn)生或者是掛載的數(shù)據(jù)的

因此,我們使用 hostPath 卷的時候,要慎重考慮,因此 hostPath 卷對節(jié)點真的是非常敏感的。

一般 hostPath卷使用的都是一些系統(tǒng)級別的 Pod ,例如在 kube-system 命名空間下面 被 DaemonSet 管控的一些系統(tǒng)級別的 pod,會使用 hostPath

這些 pod 被 DaemonSet ?管控,每一個節(jié)點只會有 1 個副本,若節(jié)點上的副本發(fā)生異常,那么會馬上在當前節(jié)點立刻創(chuàng)建一個 新的 pod ,因此,新的 pod ,自然就能夠正常的訪問到 上一個 pod 留下來的數(shù)據(jù)了,自然就可以接著上一個 pod 的運行狀態(tài)運行下去了

持久化存儲

就上面的這個問題,如果我們的 pod 無論跑到那個節(jié)點上的時候,都需要每個節(jié)點都有相同的數(shù)據(jù)可以使用,這個時候我們可以如何處理呢?

我們可以創(chuàng)建一個 pod,里面跑一個帶有持久卷 hostPath 的數(shù)據(jù)庫,可以是 mongodb

mongodb-pod-hostpath.yaml

apiVersion:?v1
kind:?Pod
metadata:
??name:?xmt-mongodb
spec:
??volumes:
??-?name:?mongodb-data
????hostPath:
??????path:?/tmp/mongodb
??containers:
??-?image:?mongo
????name:?mongodb
????volumeMounts:
????-?name:?mongodb-data
??????mountPath:?/data/db
????ports:
????-?containerPort:?27017
??????protocol:?TCP

  • 寫一個 pod 的清單,hostPath 卷設(shè)置 ?/tmp/mongodb

  • 創(chuàng)建的容器,使用 mongo, 容器掛載的路徑是 /data/db

  • 容器端口設(shè)置 mongodb 的默認端口 27017

kubectl create -f ?mongodb-pod-hostpath.yaml 創(chuàng)建 pod 后查看效果

我們的思路是,進入到 mongodb ?Pod 中 ,完成如下 2 步驟

第一步驟:

  • 創(chuàng)建一個數(shù)據(jù)庫,mytest

  • 創(chuàng)建一張表命名為 test

  • 插入一條數(shù)據(jù),數(shù)據(jù)為 name:’xiaomotong888’

第二步驟:

然后刪除這個 mongodb Pod 后,重新啟動一個一模一樣的 mongodb Pod

  • 查看剛才插入的數(shù)據(jù)是否還在,若在,說明 hostPath 的卷的內(nèi)容不會隨著 pod 的刪除而被銷毀掉

第一步:

>?use?mytest
switched?to?db?mytest
>?db.test.insert({name:'xiaomotong888'})
WriteResult({?"nInserted"?:?1?})
>?db.test.find()
{?"_id"?:?ObjectId("61ed74f43c34bef84d2f5a4c"),?"name"?:?"xiaomotong888"?}

第二步:

通過上圖已經(jīng)證實了我們上述的想法,這是符合預(yù)期的,哪怕 pod 被刪除后重建,持久化存儲的磁盤中仍然有 pod 實例中持久化的數(shù)據(jù)

另外一個持久化存儲卷

還記得之前我們列的一堆卷類型,emptyDir,gitRepo,hostPath 都說了,現(xiàn)在就差 NFS 卷

NFS 卷

NFS 卷是啥呢?

顧名思義,網(wǎng)絡(luò)文件系統(tǒng)的卷,這個卷用起來就比較方便了,寫清單的時候也是非常容易的,我們只需要指定 NFS 的 server 地址 和路徑即可

例如可以這樣:

。。。
volumes:
??-?name:?mongodbxxxx
????nfs:
??????server:?x.x.x.x
??????path:?/xx/xx/xx/xx
。。。

這個用起來就沒有那么多幺蛾子,數(shù)據(jù)掛載了別的地方,這些數(shù)據(jù)都是持久化的,跟 pod 的啟動,刪除,就沒有什么關(guān)系了

今天就到這里,學習所得,若有偏差,還請斧正

歡迎點贊,關(guān)注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

好了,本次就到這里

技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。

我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~


k8s 持久化存儲的評論 (共 條)

分享到微博請遵守國家法律
禹州市| 汤阴县| 顺义区| 宣城市| 汤阴县| 襄汾县| 天全县| 永善县| 东方市| 迁安市| 淮安市| 洪雅县| 哈尔滨市| 洪洞县| 江油市| 宁都县| 克山县| 北票市| 双流县| 和田县| 剑川县| 崇阳县| 平遥县| 上犹县| 林甸县| 岑巩县| 青冈县| 九江县| 文昌市| 蒙山县| 青冈县| 吕梁市| 怀来县| 巢湖市| 墨脱县| 上高县| 绥棱县| 桓仁| 永安市| 青海省| 鄱阳县|