在了解Kubernetes應(yīng)用狀態(tài)部署前,我們先看看Kubernetes的高級(jí)架構(gòu),方便更好的理解Kubernetes的狀態(tài)。
創(chuàng)新互聯(lián)基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺(tái)為眾多戶提供成都溫江機(jī)房 四川大帶寬租用 成都機(jī)柜租用 成都服務(wù)器租用。Kubernetes 的高級(jí)架構(gòu)
包括應(yīng)用程序部署模型,服務(wù)發(fā)現(xiàn)和負(fù)載均衡,內(nèi)部/外部路由分離、persistentvolume 的使用,部署節(jié)點(diǎn)守護(hù)程序,部署有狀態(tài)分布式系統(tǒng),作業(yè)后臺(tái)運(yùn)行,部署數(shù)據(jù)庫(kù),配置管理,憑證管理,滾動(dòng)更新,自動(dòng)縮放和包管理。
A、Kubernetes的基本設(shè)計(jì)策略之一就是,無(wú)需更改應(yīng)用程序代碼,就能部署在虛擬機(jī)上運(yùn)行的現(xiàn)有應(yīng)用程序。另外,任何運(yùn)行在虛擬機(jī)上的應(yīng)用程序都可以通過(guò)容器化組件在 Kubernetes 上實(shí)現(xiàn)部署。這是通過(guò)容器分組、容器編排、覆蓋網(wǎng)絡(luò)、基于第 4 層虛擬IP、服務(wù)發(fā)現(xiàn)、支持守護(hù)程序運(yùn)行、部署有狀態(tài)應(yīng)用程序組件、以及擴(kuò)展容器編排系統(tǒng)這些核心功能實(shí)現(xiàn)的。
B、Kubernetes 可以提供一組可動(dòng)態(tài)擴(kuò)展的主機(jī),可以應(yīng)用容器運(yùn)行 workload,并使用一組稱為 master 的管理主機(jī)來(lái)提供管理整個(gè)容器基礎(chǔ)架構(gòu)的 API。這些 workload 包括長(zhǎng)期運(yùn)行服務(wù),批處理作業(yè)和容器主機(jī)的守護(hù)程序。為了提供容器到容器的路由,所有容器主機(jī)都用覆蓋網(wǎng)絡(luò)連接在一起。部署在 Kubernetes 上的應(yīng)用程序在集群網(wǎng)絡(luò)中是動(dòng)態(tài)可見(jiàn)的,并可通過(guò)傳統(tǒng)負(fù)載均衡器向外部網(wǎng)絡(luò)暴露。集群管理器的狀態(tài)存儲(chǔ)在一個(gè)高度分布的 key/value 存儲(chǔ)(etcd)中,該存儲(chǔ)在 master上運(yùn)行。
Kubernetes應(yīng)用狀態(tài)部署
在K8s運(yùn)行的服務(wù),分為無(wú)狀態(tài)服務(wù)和有狀態(tài)服務(wù),下面分別看看K8s是如何運(yùn)行這兩類不同的服務(wù)的
01“無(wú)狀態(tài)”服務(wù)
無(wú)狀態(tài)服務(wù),即 Web 服務(wù)器、代理和應(yīng)用程序代碼這樣的應(yīng)用程序,它們可以處理數(shù)據(jù)但不進(jìn)行存儲(chǔ)。編排過(guò)程中,開(kāi)發(fā)者比較喜歡使用它們,因?yàn)樗鼈円子诓渴鹎乙子跀U(kuò)展。如果流量上升,則只需添加更多的負(fù)載平衡。更重要的是,它們是“不變動(dòng)的”;上游容器鏡像和基礎(chǔ)架構(gòu)中正在運(yùn)行的容器其實(shí)幾乎沒(méi)有區(qū)別。這意味著它們可以隨時(shí)被替代,而且容器實(shí)例切換過(guò)程中幾乎不需要耗費(fèi)“切換成本”。
無(wú)狀態(tài)服務(wù),K8s使用Replicaset來(lái)保證一個(gè)服務(wù)的實(shí)例數(shù)量,如果說(shuō)某個(gè)Pod實(shí)例由于某個(gè)原因被crash了,RC會(huì)立即用一個(gè)Pod的模板新啟一個(gè)Pod來(lái)替代它,由于是無(wú)狀態(tài)的服務(wù),新啟的Pod與原來(lái)健康狀態(tài)下的Pod是一模一樣。當(dāng)Pod被重建后它的IP地址可能發(fā)生變化,為了對(duì)外提供一個(gè)穩(wěn)定的訪問(wèn)接口,K8s引入了Service的概念,一個(gè)Service后面可以掛多個(gè)Pod,實(shí)現(xiàn)服務(wù)的高可用。
在Kubernetes中,Deployment和Replicasets都是運(yùn)用無(wú)狀態(tài)服務(wù)的有效手段。
02"有狀態(tài)"服務(wù)
有狀態(tài)的服務(wù),即路由器、CDN(內(nèi)容傳送網(wǎng)絡(luò))、streaming 服務(wù)器和認(rèn)證服務(wù)器。從部署開(kāi)始,這些容器就開(kāi)始與上游鏡像不同了,時(shí)間越長(zhǎng)它們的差異越大。這種差異就被稱為“state(狀態(tài))”。事實(shí)上,每個(gè)運(yùn)行的應(yīng)用程序都至少有一個(gè)小狀態(tài)(差異),但對(duì)于“無(wú)狀態(tài)”應(yīng)用程序來(lái)說(shuō),狀態(tài)(差異)很小,而且可以進(jìn)行快速替換。
普通有狀態(tài)服務(wù),和無(wú)狀態(tài)服務(wù)相比,它多了狀態(tài)保存的需求,K8s提供了以Volmume和Peristent Volmume為基礎(chǔ)的存儲(chǔ)系統(tǒng),可以實(shí)現(xiàn)服務(wù)的狀態(tài)保存。
而在容器化應(yīng)用程序最困難的任務(wù)之一,就是設(shè)計(jì)有狀態(tài)分布式組件的部署體系結(jié)構(gòu)。由于無(wú)狀態(tài)組件可能沒(méi)有預(yù)定義的啟動(dòng)順序、集群要求、點(diǎn)對(duì)點(diǎn) TCP 連接、唯一的網(wǎng)絡(luò)標(biāo)識(shí)符、正常的啟動(dòng)和終止要求等,因此可以很容易地進(jìn)行容器化。諸如數(shù)據(jù)庫(kù),大數(shù)據(jù)分析系統(tǒng),分布式 key/value 存儲(chǔ)和 message brokers 可能有復(fù)雜的分布式體系結(jié)構(gòu),都可能用到上述功能。
Kubernetes 引入了 StatefulSets 資源來(lái)支持這種復(fù)雜的需求,用來(lái)管理POD部署和擴(kuò)容,并為這些pod提供順序和唯一性的保證。
03 StatefulSet部署—有狀態(tài)應(yīng)用
用于解決各個(gè)pod實(shí)例獨(dú)立生命周期管理,提供各個(gè)實(shí)例的啟動(dòng)順序和唯一性。
使用StatefulSet的前提是:
1、Kubernetes集群的版本≥1.5;
2、安裝好DNS集群插件,版本≥15。
StatefulSet為什么適合有狀態(tài)的程序,看看它的特性:
A、穩(wěn)定,唯一的網(wǎng)絡(luò)標(biāo)識(shí)符。可以發(fā)現(xiàn)集群內(nèi)部的其他成員。
B、穩(wěn)定的持久化存儲(chǔ)。通過(guò)Kubernetes的PV/PVC或者外部存儲(chǔ)(預(yù)先提供)來(lái)實(shí)現(xiàn)。
C、啟動(dòng)或關(guān)閉時(shí)有序。有序的,優(yōu)雅的部署和擴(kuò)展。有序,優(yōu)雅的刪除和終止。有序的自動(dòng)滾動(dòng)更新。實(shí)現(xiàn)部署和擴(kuò)容保證。
04運(yùn)用StatefulSet會(huì)帶來(lái)什么好處呢?
部署和擴(kuò)容的保證
對(duì)于帶有N個(gè)副本集的StatefulSet,當(dāng)pod被部署,它們將按0到N-1的順序被創(chuàng)建。
當(dāng)一Pod被刪除時(shí),它們將按照N-1到0的順序被終止。
在進(jìn)行Pod擴(kuò)容前,所有依賴的Pod應(yīng)該都已在運(yùn)行和準(zhǔn)備好。
在Pod被終止前,所有的依賴它的Pod都必須完全停止。
如果你的系統(tǒng)是微服務(wù)構(gòu)成的生態(tài)系統(tǒng),就會(huì)比較繁瑣的交付新服務(wù),如果更近一步,服務(wù)是有狀態(tài)的,那么kubernetes的自動(dòng)化和健壯性特性會(huì)對(duì)你有很大的幫助,StatefulSet的目的就是給眾多的有狀態(tài)負(fù)載提供正確的控制器支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站題目:技術(shù)進(jìn)階:Kubernetes高級(jí)架構(gòu)與應(yīng)用狀態(tài)部署-創(chuàng)新互聯(lián)
文章分享:http://jinyejixie.com/article2/dpshic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容