- OpenShift在企業(yè)中的實踐:PaaS DevOps微服務(wù)(第2版)
- 魏新宇 郭躍軍
- 610字
- 2021-11-05 10:17:27
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的功能。
- Learn ECMAScript(Second Edition)
- Apache ZooKeeper Essentials
- PHP+MySQL網(wǎng)站開發(fā)技術(shù)項目式教程(第2版)
- Hadoop+Spark大數(shù)據(jù)分析實戰(zhàn)
- INSTANT Django 1.5 Application Development Starter
- Ext JS 4 Web Application Development Cookbook
- HDInsight Essentials(Second Edition)
- 軟件品質(zhì)之完美管理:實戰(zhàn)經(jīng)典
- 區(qū)塊鏈技術(shù)與應(yīng)用
- Geospatial Development By Example with Python
- Scratch趣味編程:陪孩子像搭積木一樣學(xué)編程
- .NET Standard 2.0 Cookbook
- 零基礎(chǔ)學(xué)C語言(升級版)
- WebStorm Essentials
- Advanced Python Programming