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

4.4.1 StatefulSet簡介

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

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

StatefulSet的適用場景如下:

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

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

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

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

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

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

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

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

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

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

StatefuleSets對象通常由以下三部分組成:

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

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

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

接下來,我們通過實際案例展現(xiàn)StatefulSet的功能。

主站蜘蛛池模板: 嘉黎县| 松桃| 武冈市| 城步| 浪卡子县| 田东县| 内丘县| 美姑县| 阿巴嘎旗| 礼泉县| 东宁县| 开远市| 普兰店市| 萨嘎县| 三河市| 芜湖县| 民丰县| 鞍山市| 新乡市| 昭觉县| 福海县| 滦南县| 永吉县| 怀柔区| 桐庐县| 通河县| 乐平市| 黄山市| 莱州市| 阿拉善盟| 高清| 龙游县| 余姚市| 枣强县| 桂平市| 潜江市| 莲花县| 大姚县| 汾阳市| 阿克陶县| 荥阳市|