- OpenShift在企業(yè)中的實(shí)踐:PaaS DevOps微服務(wù)(第2版)
- 魏新宇 郭躍軍
- 610字
- 2021-11-05 10:17:27
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的功能。
- 解構(gòu)產(chǎn)品經(jīng)理:互聯(lián)網(wǎng)產(chǎn)品策劃入門(mén)寶典
- 深入淺出Java虛擬機(jī):JVM原理與實(shí)戰(zhàn)
- 神經(jīng)網(wǎng)絡(luò)編程實(shí)戰(zhàn):Java語(yǔ)言實(shí)現(xiàn)(原書(shū)第2版)
- RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南
- Processing互動(dòng)編程藝術(shù)
- Easy Web Development with WaveMaker
- 全棧自動(dòng)化測(cè)試實(shí)戰(zhàn):基于TestNG、HttpClient、Selenium和Appium
- Learning Concurrent Programming in Scala
- C#程序設(shè)計(jì)教程(第3版)
- 21天學(xué)通C++(第5版)
- Fastdata Processing with Spark
- 零基礎(chǔ)學(xué)C++(升級(jí)版)
- Android 游戲開(kāi)發(fā)大全(第二版)
- Apache Solr for Indexing Data
- MATLAB從入門(mén)到精通