官术网_书友最值得收藏!

4.4.1 StatefulSet簡(jiǎn)介

在OpenShift中,Deployment Config或者Deployment控制器都是面向無(wú)狀態(tài)應(yīng)用的。舉個(gè)簡(jiǎn)單的例子,同一個(gè)Deployment Config,在不同時(shí)刻部署的Pod,它的IP可能是不同的,而且每個(gè)Pod掛載是同一個(gè)PVC。這顯然不適合有狀態(tài)應(yīng)用,因?yàn)镈eployment Config沒(méi)有維護(hù)Pod的持久化標(biāo)識(shí)。那么,如何在OpenShift部署有狀態(tài)應(yīng)用呢?

在OpenShift 3.9版本中正式引入StatefulSet,這個(gè)控制器是針對(duì)有狀態(tài)應(yīng)用的。StatefulSet管理Pod部署和擴(kuò)容,并為這些Pod提供順序和唯一性的保證。與Deployment Config相似的地方是StatefulSet基于Spec規(guī)格管理Pod,與Deployment Config不同的地方是StatefulSet需要維護(hù)每一個(gè)Pod的唯一身份標(biāo)識(shí)。這些Pod基于同樣的Spec創(chuàng)建,但相互之間不能替換,每一個(gè)Pod都保留自己的持久化標(biāo)識(shí)。

StatefulSet的適用場(chǎng)景如下:

·應(yīng)用需要有穩(wěn)定、唯一的網(wǎng)絡(luò)標(biāo)識(shí)。

·應(yīng)用需要有穩(wěn)定、持久的存儲(chǔ)。

·應(yīng)用需要有序、優(yōu)雅的部署和擴(kuò)容。

·應(yīng)用需要有序、優(yōu)雅的刪除和終止。

·應(yīng)用需要有序、自動(dòng)滾動(dòng)更新。

StatefulSet并不是可以運(yùn)行所有的有狀態(tài)應(yīng)用,本身的限制有:

·Pod存儲(chǔ)必須由PV提供。無(wú)論是通過(guò)StorageClass自動(dòng)創(chuàng)建或者管理手動(dòng)預(yù)先創(chuàng)建。

·刪除或者縮容StatefulSet不會(huì)刪除與StatefulSet關(guān)聯(lián)的數(shù)據(jù)卷,這樣能夠保證數(shù)據(jù)的安全性,數(shù)據(jù)比清理關(guān)聯(lián)資源更重要。

·當(dāng)前的StatefulSet需要一個(gè)Headless服務(wù)來(lái)為Pod提供網(wǎng)絡(luò)標(biāo)識(shí),此Headless服務(wù)需要通過(guò)手工創(chuàng)建。

·當(dāng)刪除StatefulSet時(shí)不提供任何關(guān)于Pod的有序和優(yōu)雅關(guān)閉。若要實(shí)現(xiàn),可以在刪除之前先將StatefulSets實(shí)例數(shù)設(shè)置為0。

StatefuleSets對(duì)象通常由以下三部分組成:

·一個(gè)Headless Service,用來(lái)控制網(wǎng)絡(luò)域。

·一個(gè)StatefulSet對(duì)象聲明,包含Pod Spec及一些元數(shù)據(jù)。

·提供穩(wěn)定存儲(chǔ)的PVC或Volume Claim Template。

接下來(lái),我們通過(guò)實(shí)際案例展現(xiàn)StatefulSet的功能。

主站蜘蛛池模板: 鸡东县| 屏南县| 峨山| 神池县| 乌苏市| 景宁| 崇义县| 常熟市| 廊坊市| 铜鼓县| 彭水| 瑞金市| 维西| 武隆县| 上饶县| 松桃| 台中县| 婺源县| 萍乡市| 明水县| 宝坻区| 永城市| 黑山县| 青冈县| 吉木萨尔县| 托克逊县| 牡丹江市| 怀宁县| 威远县| 建阳市| 通州区| 枝江市| 普兰店市| 岐山县| 鹤壁市| 英超| 盐城市| 阿巴嘎旗| 基隆市| 米易县| 沾化县|