1 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
在K8S運(yùn)行的服務(wù),從簡(jiǎn)單到復(fù)雜可以分成三類:無(wú)狀態(tài)服務(wù)、普通有狀態(tài)服務(wù)和有狀態(tài)集群服務(wù)。下面分別來(lái)看K8S是如何運(yùn)行這三類服務(wù)的。
無(wú)狀態(tài)服務(wù),K8S使用RC(或更新的Replica Set)來(lái)保證一個(gè)服務(wù)的實(shí)例數(shù)量,如果說(shuō)某個(gè)Pod實(shí)例由于某種原因Crash了,RC會(huì)立刻用這個(gè)Pod的模版新啟一個(gè)Pod來(lái)替代它,由于是無(wú)狀態(tài)的服務(wù),新啟的Pod與原來(lái)健康狀態(tài)下的Pod一模一樣。在Pod被重建后它的IP地址可能發(fā)生變化,為了對(duì)外提供一個(gè)穩(wěn)定的訪問(wèn)接口,K8S引入了Service的概念。一個(gè)Service后面可以掛多個(gè)Pod,實(shí)現(xiàn)服務(wù)的高可用。
普通有狀態(tài)服務(wù),和無(wú)狀態(tài)服務(wù)相比,它多了狀態(tài)保存的需求。Kubernetes提供了以Volume和Persistent Volume為基礎(chǔ)的存儲(chǔ)系統(tǒng),可以實(shí)現(xiàn)服務(wù)的狀態(tài)保存。
有狀態(tài)集群服務(wù),與普通有狀態(tài)服務(wù)相比,它多了集群管理的需求。K8S為此開(kāi)發(fā)了一套以Pet Set為核心的全新特性,方便了有狀態(tài)集群服務(wù)在K8S上的部署和管理。具體來(lái)說(shuō)是通過(guò)Init Container來(lái)做集群的初始化工作,用Headless Service來(lái)維持集群成員的穩(wěn)定關(guān)系,用動(dòng)態(tài)存儲(chǔ)供給來(lái)方便集群擴(kuò)容,最后用Pet Set來(lái)綜合管理整個(gè)集群。
要運(yùn)行有狀態(tài)集群服務(wù)要解決的問(wèn)題有兩個(gè),一個(gè)是狀態(tài)保存,另一個(gè)是集群管理。我們先來(lái)看如何解決第一個(gè)問(wèn)題:狀態(tài)保存。Kubernetes有一套以Volume插件為基礎(chǔ)的存儲(chǔ)系統(tǒng),通過(guò)這套存儲(chǔ)系統(tǒng)可以實(shí)現(xiàn)應(yīng)用和服務(wù)的狀態(tài)保存。
K8S的存儲(chǔ)系統(tǒng)從基礎(chǔ)到高級(jí)又大致分為三個(gè)層次:普通Volume,Persistent Volume和動(dòng)態(tài)存儲(chǔ)供應(yīng)。
1.普通Volume
最簡(jiǎn)單的普通Volume是單節(jié)點(diǎn)Volume。它和Docker的存儲(chǔ)卷類似,使用的是Pod所在K8S節(jié)點(diǎn)的本地目錄。
第二種類型是跨節(jié)點(diǎn)存儲(chǔ)卷,這種存儲(chǔ)卷不和某個(gè)具體的K8S節(jié)點(diǎn)綁定,而是獨(dú)立于K8S節(jié)點(diǎn)存在的,整個(gè)存儲(chǔ)集群和K8S集群是兩個(gè)集群,相互獨(dú)立。
跨節(jié)點(diǎn)的存儲(chǔ)卷在Kubernetes上用的比較多,如果已有的存儲(chǔ)不能滿足要求,還可以開(kāi)發(fā)自己的Volume插件,只需要實(shí)現(xiàn)Volume.go里定義的接口。如果你是一個(gè)存儲(chǔ)廠商,想要自己的存儲(chǔ)支持Kubernetes上運(yùn)行的容器,就可以去開(kāi)發(fā)一個(gè)自己的Volume插件。
2.persistent volume
它和普通Volume的區(qū)別是什么呢?
普通Volume和使用它的Pod之間是一種靜態(tài)綁定關(guān)系,在定義Pod的文件里,同時(shí)定義了它使用的Volume。Volume是Pod的附屬品,我們無(wú)法單獨(dú)創(chuàng)建一個(gè)Volume,因?yàn)樗皇且粋€(gè)獨(dú)立的K8S資源對(duì)象。
而Persistent Volume簡(jiǎn)稱PV是一個(gè)K8S資源對(duì)象,所以我們可以單獨(dú)創(chuàng)建一個(gè)PV。它不和Pod直接發(fā)生關(guān)系,而是通過(guò)Persistent Volume Claim,簡(jiǎn)稱PVC來(lái)實(shí)現(xiàn)動(dòng)態(tài)綁定。Pod定義里指定的是PVC,然后PVC會(huì)根據(jù)Pod的要求去自動(dòng)綁定合適的PV給Pod使用。
- 1 回答
- 0 關(guān)注
- 624 瀏覽
添加回答
舉報(bào)