技術(shù)進階:Kubernetes高級架構(gòu)與應(yīng)用狀態(tài)部署-創(chuàng)新互聯(lián)

在了解Kubernetes應(yīng)用狀態(tài)部署前,我們先看看Kubernetes的高級架構(gòu),方便更好的理解Kubernetes的狀態(tài)。

創(chuàng)新互聯(lián)基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺為眾多戶提供成都溫江機房 四川大帶寬租用 成都機柜租用 成都服務(wù)器租用。

Kubernetes 的高級架構(gòu)

包括應(yīng)用程序部署模型,服務(wù)發(fā)現(xiàn)和負載均衡,內(nèi)部/外部路由分離、persistentvolume 的使用,部署節(jié)點守護程序,部署有狀態(tài)分布式系統(tǒng),作業(yè)后臺運行,部署數(shù)據(jù)庫,配置管理,憑證管理,滾動更新,自動縮放和包管理。
A、Kubernetes的基本設(shè)計策略之一就是,無需更改應(yīng)用程序代碼,就能部署在虛擬機上運行的現(xiàn)有應(yīng)用程序。另外,任何運行在虛擬機上的應(yīng)用程序都可以通過容器化組件在 Kubernetes 上實現(xiàn)部署。這是通過容器分組、容器編排、覆蓋網(wǎng)絡(luò)、基于第 4 層虛擬IP、服務(wù)發(fā)現(xiàn)、支持守護程序運行、部署有狀態(tài)應(yīng)用程序組件、以及擴展容器編排系統(tǒng)這些核心功能實現(xiàn)的。
B、Kubernetes 可以提供一組可動態(tài)擴展的主機,可以應(yīng)用容器運行 workload,并使用一組稱為 master 的管理主機來提供管理整個容器基礎(chǔ)架構(gòu)的 API。這些 workload 包括長期運行服務(wù),批處理作業(yè)和容器主機的守護程序。為了提供容器到容器的路由,所有容器主機都用覆蓋網(wǎng)絡(luò)連接在一起。部署在 Kubernetes 上的應(yīng)用程序在集群網(wǎng)絡(luò)中是動態(tài)可見的,并可通過傳統(tǒng)負載均衡器向外部網(wǎng)絡(luò)暴露。集群管理器的狀態(tài)存儲在一個高度分布的 key/value 存儲(etcd)中,該存儲在 master上運行。

Kubernetes應(yīng)用狀態(tài)部署
在K8s運行的服務(wù),分為無狀態(tài)服務(wù)和有狀態(tài)服務(wù),下面分別看看K8s是如何運行這兩類不同的服務(wù)的

01“無狀態(tài)”服務(wù)

無狀態(tài)服務(wù),即 Web 服務(wù)器、代理和應(yīng)用程序代碼這樣的應(yīng)用程序,它們可以處理數(shù)據(jù)但不進行存儲。編排過程中,開發(fā)者比較喜歡使用它們,因為它們易于部署且易于擴展。如果流量上升,則只需添加更多的負載平衡。更重要的是,它們是“不變動的”;上游容器鏡像和基礎(chǔ)架構(gòu)中正在運行的容器其實幾乎沒有區(qū)別。這意味著它們可以隨時被替代,而且容器實例切換過程中幾乎不需要耗費“切換成本”。
無狀態(tài)服務(wù),K8s使用Replicaset來保證一個服務(wù)的實例數(shù)量,如果說某個Pod實例由于某個原因被crash了,RC會立即用一個Pod的模板新啟一個Pod來替代它,由于是無狀態(tài)的服務(wù),新啟的Pod與原來健康狀態(tài)下的Pod是一模一樣。當Pod被重建后它的IP地址可能發(fā)生變化,為了對外提供一個穩(wěn)定的訪問接口,K8s引入了Service的概念,一個Service后面可以掛多個Pod,實現(xiàn)服務(wù)的高可用。
在Kubernetes中,Deployment和Replicasets都是運用無狀態(tài)服務(wù)的有效手段。

02"有狀態(tài)"服務(wù)

有狀態(tài)的服務(wù),即路由器、CDN(內(nèi)容傳送網(wǎng)絡(luò))、streaming 服務(wù)器和認證服務(wù)器。從部署開始,這些容器就開始與上游鏡像不同了,時間越長它們的差異越大。這種差異就被稱為“state(狀態(tài))”。事實上,每個運行的應(yīng)用程序都至少有一個小狀態(tài)(差異),但對于“無狀態(tài)”應(yīng)用程序來說,狀態(tài)(差異)很小,而且可以進行快速替換。
普通有狀態(tài)服務(wù),和無狀態(tài)服務(wù)相比,它多了狀態(tài)保存的需求,K8s提供了以Volmume和Peristent Volmume為基礎(chǔ)的存儲系統(tǒng),可以實現(xiàn)服務(wù)的狀態(tài)保存。
而在容器化應(yīng)用程序最困難的任務(wù)之一,就是設(shè)計有狀態(tài)分布式組件的部署體系結(jié)構(gòu)。由于無狀態(tài)組件可能沒有預(yù)定義的啟動順序、集群要求、點對點 TCP 連接、唯一的網(wǎng)絡(luò)標識符、正常的啟動和終止要求等,因此可以很容易地進行容器化。諸如數(shù)據(jù)庫,大數(shù)據(jù)分析系統(tǒng),分布式 key/value 存儲和 message brokers 可能有復雜的分布式體系結(jié)構(gòu),都可能用到上述功能。
Kubernetes 引入了 StatefulSets 資源來支持這種復雜的需求,用來管理POD部署和擴容,并為這些pod提供順序和唯一性的保證。

03 StatefulSet部署—有狀態(tài)應(yīng)用

用于解決各個pod實例獨立生命周期管理,提供各個實例的啟動順序和唯一性。
使用StatefulSet的前提是:
1、Kubernetes集群的版本≥1.5;
2、安裝好DNS集群插件,版本≥15。

StatefulSet為什么適合有狀態(tài)的程序,看看它的特性:

A、穩(wěn)定,唯一的網(wǎng)絡(luò)標識符??梢园l(fā)現(xiàn)集群內(nèi)部的其他成員。
B、穩(wěn)定的持久化存儲。通過Kubernetes的PV/PVC或者外部存儲(預(yù)先提供)來實現(xiàn)。
C、啟動或關(guān)閉時有序。有序的,優(yōu)雅的部署和擴展。有序,優(yōu)雅的刪除和終止。有序的自動滾動更新。實現(xiàn)部署和擴容保證。

04運用StatefulSet會帶來什么好處呢?
部署和擴容的保證
對于帶有N個副本集的StatefulSet,當pod被部署,它們將按0到N-1的順序被創(chuàng)建。
當一Pod被刪除時,它們將按照N-1到0的順序被終止。
在進行Pod擴容前,所有依賴的Pod應(yīng)該都已在運行和準備好。
在Pod被終止前,所有的依賴它的Pod都必須完全停止。

如果你的系統(tǒng)是微服務(wù)構(gòu)成的生態(tài)系統(tǒng),就會比較繁瑣的交付新服務(wù),如果更近一步,服務(wù)是有狀態(tài)的,那么kubernetes的自動化和健壯性特性會對你有很大的幫助,StatefulSet的目的就是給眾多的有狀態(tài)負載提供正確的控制器支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:技術(shù)進階:Kubernetes高級架構(gòu)與應(yīng)用狀態(tài)部署-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article2/dpshic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司