有狀態(tài)的應(yīng)用如何部署 1?
前面我們分享很多關(guān)于 K8S 的內(nèi)容,有沒(méi)有發(fā)現(xiàn) pod 都是無(wú)狀態(tài),RS / RC 管理的 pod 也是無(wú)狀態(tài)的,我們可以任意刪除一個(gè) pod,副本管理器又會(huì)馬上給我們創(chuàng)建一個(gè) pod
那么如果咱們的這個(gè) pod 是有掛載持久卷的,那么我們用老方法可還行?

有狀態(tài)和無(wú)狀態(tài)
簡(jiǎn)單說(shuō)明一下,什么是有狀態(tài)的服務(wù),什么是無(wú)狀態(tài)的服務(wù):
有狀態(tài)服務(wù)
服務(wù)本身依賴(lài)于環(huán)境中的狀態(tài),可能需要數(shù)據(jù)庫(kù)來(lái)持久化狀態(tài)數(shù)據(jù)
某一個(gè)時(shí)刻,一個(gè)請(qǐng)求只能被服務(wù)的某個(gè)實(shí)例處理
會(huì)存儲(chǔ)狀態(tài)數(shù)據(jù),若需要擴(kuò)展實(shí)例,可能整個(gè)系統(tǒng)都進(jìn)行變動(dòng)
無(wú)狀態(tài)服務(wù)
服務(wù)本身不依賴(lài)自身的狀態(tài)
外部的任何請(qǐng)求到服務(wù)的任何一個(gè)實(shí)例都是可以得到正確的期望的響應(yīng)
可以橫向擴(kuò)展,能做負(fù)載均衡,自身不會(huì)存儲(chǔ)狀態(tài)機(jī)
回顧 ReplicaSet
咱們回顧一下 RS / RC ,他們都是管理的 pod 的控制器,創(chuàng)建出來(lái)的 pod 也都是通過(guò)預(yù)設(shè)好的模板創(chuàng)建出來(lái)的,這些 pod 也沒(méi)有什么區(qū)別
我們上面有提到數(shù)據(jù),如果我們?cè)?RS 中加入一個(gè)聲明的持久卷會(huì)是什么樣的效果呢?
會(huì)是像這樣所有 pod 共享一個(gè)持久卷聲明?

還是會(huì)向這樣每一個(gè) pod 有一個(gè)獨(dú)立的持久卷聲明呢?

答案當(dāng)然是前者
這個(gè)點(diǎn)可以在強(qiáng)調(diào)一下,感興趣的小伙伴可以嘗試一下,我們創(chuàng)建的是一個(gè) RS,RS 里面會(huì)根據(jù) pod 的副本數(shù),來(lái)創(chuàng)建和刪除多個(gè) pod,若我們指定了持久卷,那么是多個(gè) pod 共享同一個(gè)卷的
因?yàn)樵蹅兊?pod 都是從 pod 模板生成的, pod 的模板早已指定好具體的持久卷是哪一個(gè),無(wú)論生成多少個(gè) pod ,都是共享一個(gè)持久卷
除非咱們創(chuàng)建多個(gè) RS
那么如果我們需要就 1 個(gè) RS 就能做到創(chuàng)建的每一個(gè) pod 都可以享受獨(dú)立的持久卷聲明呢?
那么就抱歉了,K8S 暫時(shí)還不支持,沒(méi)準(zhǔn)后續(xù)可以支持也說(shuō)不一定
回過(guò)頭來(lái)看,如果我們需要 一個(gè) pod 對(duì)應(yīng)一個(gè)持久卷聲明,一個(gè)持久卷,那么就得一個(gè) RS 創(chuàng)建 一個(gè) pod 才能實(shí)現(xiàn)了

那么我們?nèi)绾芜M(jìn)行擴(kuò)容和縮容呢?
這又是一個(gè)麻煩事,這種做法不能自動(dòng)的動(dòng)態(tài)進(jìn)行擴(kuò)縮容,只能我們手動(dòng)去刪除 RS 或者修改 RS 的副本個(gè)數(shù) ,而且對(duì)于以后橫向擴(kuò)展的時(shí)候,我們無(wú)限的改動(dòng) RS ,這真的太笨重了,云原生的做法絕對(duì)不能是這個(gè)樣子的,肯定有好方法
多個(gè) pod 共享一個(gè)持久化卷,但是使用不同的目錄?

看上去感覺(jué)還不錯(cuò),我們是不是就可以讓多個(gè) pod 共享一個(gè)持久化卷,但是使用不同的目錄,類(lèi)似于下面這種呢?

根據(jù)示意圖來(lái)看,感覺(jué)可行對(duì)吧
咱們細(xì)想一下的時(shí)候,我們就知道這樣子不太行嘞
對(duì)于不同的 pod ,需要?jiǎng)討B(tài)的去指定持久卷的不同目錄,那么如何做到呢?這些 pod 都是通過(guò)同一個(gè)模板創(chuàng)建出來(lái)的,如何動(dòng)態(tài)的去改變呢?
思來(lái)想去,還是需要多個(gè) RS,不同的 RS 指定同一個(gè)持久化卷,不同的 pod 模板指定自己需要使用的掛載路徑
那么 RS 是不是就真的搞不定上面的需求呢? 創(chuàng)建一個(gè) RS ,讓多個(gè) pod 有自己獨(dú)立的持久化卷
是的,就是搞不定,咱們看看 K8S 還有沒(méi)有其他的處理方式來(lái)處理這種需求,放心,肯定可以解決,下回見(jiàn)
今天就到這里,學(xué)習(xí)所得,若有偏差,還請(qǐng)斧正
歡迎點(diǎn)贊,關(guān)注,收藏
朋友們,你的支持和鼓勵(lì),是我堅(jiān)持分享,提高質(zhì)量的動(dòng)力

好了,本次就到這里
技術(shù)是開(kāi)放的,我們的心態(tài),更應(yīng)是開(kāi)放的。擁抱變化,向陽(yáng)而生,努力向前行。
我是阿兵云原生,歡迎點(diǎn)贊關(guān)注收藏,下次見(jiàn)~