您好,登錄后才能下訂單哦!
這篇文章主要介紹kubernetes中Istio的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
一:簡介
隨著微服務(wù)架構(gòu)的普及,越來越多的應(yīng)用已經(jīng)拆分成了微服務(wù)的架構(gòu)。而微服務(wù)架構(gòu)落地的一個難點,就是如何讓服務(wù)和服務(wù)之間進(jìn)行穩(wěn)定的通信。
部署微服務(wù)之后,如何做服務(wù)的負(fù)載均衡、容錯性、服務(wù)監(jiān)控、日志追蹤以及熔斷等功能都需要考慮周全。
為了讓業(yè)務(wù)團(tuán)隊返璞歸真,將所有精力集中在業(yè)務(wù)代碼而不是配合微服務(wù)組件寫大量非功能性需求的代碼,Istio應(yīng)運(yùn)而生。
Istio是谷歌、IBM、Lyft等公司貢獻(xiàn)的開源Service Mesh組件。它實現(xiàn)的目標(biāo)就是讓業(yè)務(wù)開發(fā)不再關(guān)注微服務(wù)之間如何調(diào)用、管理、監(jiān)控等非功能性需求,而是讓Istio來處理這些問題。Istio和Kubernetes有天然的支持。
Istio能輕松解決藍(lán)綠發(fā)布和金絲雀發(fā)布的問題。
Istio能夠做到:
1.HTTP、gRPC、WebSocket和TCP流量的自動負(fù)載均衡。
2.通過豐富的路由規(guī)則、重試、故障轉(zhuǎn)移和故障注入對流量行為進(jìn)行細(xì)粒度控制。
3.支持訪問控制、速率限制和配額的可拔插策略層和配置API。
4.自動指標(biāo)、日志和集群內(nèi)所有流量的跟蹤,包括集群入口和出口。
5.通過集群中的服務(wù)之間的強(qiáng)身份斷言來實現(xiàn)服務(wù)間的身份驗證。
通過在整個環(huán)境中部署一個特殊的sidecar代理(輔助容器),您可以將Istio支持添加到服務(wù)中。安裝了sidecar代理之后,(微)服務(wù)之間的所有網(wǎng)絡(luò)通信都通過這個代理。此外,所有的網(wǎng)絡(luò)通信都是使用Istio的控制平面功能進(jìn)行配置和管理的。
二:主要功能
1.流量管理(Pilot)。控制服務(wù)之間的流量和API調(diào)用的流向,使得調(diào)用更靈活可靠,并使網(wǎng)絡(luò)在惡劣情況下更加健壯。
2.可觀察性。通過集成zipkin等服務(wù),快速了解服務(wù)之間的依賴關(guān)系,以及它們之間流量的本質(zhì)和流向,從而提供快速識別問題的能力。
3.策略執(zhí)行(mixer)。將組織策略應(yīng)用于服務(wù)之間的互動,確保訪問策略得以執(zhí)行,資源在消費(fèi)者之間良好分配。策略的更改是通過配置網(wǎng)格而不是修改應(yīng)用程序代碼。
4.服務(wù)身份和安全(Istio-auth)。為網(wǎng)格中的服務(wù)提供可驗證身份,并提供保護(hù)服務(wù)流量的能力,使其可以在不同可信度的網(wǎng)絡(luò)上流轉(zhuǎn)。
除此之外,Istio針對可擴(kuò)展性進(jìn)行了設(shè)計,以滿足不同的部署需要:
1.平臺支持。Istio旨在可以在各種環(huán)境中運(yùn)行,包括跨云、預(yù)置環(huán)境、Kubernetes、Mesos等。最初專注于Kubernetes,但很快將支持其他環(huán)境。
2.集成和定制。策略執(zhí)行組件可以擴(kuò)展和定制,以便與現(xiàn)有的ACL、日志、監(jiān)控、配額、審核等解決方案集成。
三:整體架構(gòu)
分為控制平面和數(shù)據(jù)平面兩部分:
控制平面:Pilot, Mixer, Istio-Auth,分別對Istio中的服務(wù)做流量管理,策略配置,安全通信等規(guī)則配置
數(shù)據(jù)平面:所有pod上的Envoy,負(fù)責(zé)所有規(guī)則的執(zhí)行
主要構(gòu)成組件:
1.Envoy:用于調(diào)解服務(wù)網(wǎng)格中所有服務(wù)的所有入站和出站流量。支持例如動態(tài)服務(wù)發(fā)現(xiàn),負(fù)載均衡,故障注入、流量管理等功能。Envoy 以 sidecar 的方式部署在相關(guān)的服務(wù)的 Pod 中。
2.Pilot:Pilot 負(fù)責(zé)收集和驗證配置并將其傳播到各種 Istio組件。
3.Mixer:負(fù)責(zé)在服務(wù)網(wǎng)格上執(zhí)行訪問控制和使用策略,并從 Envoy 代理和其他服務(wù)收集遙測數(shù)據(jù)。
4.Istio-Auth:提供強(qiáng)大的服務(wù)間認(rèn)證和終端用戶認(rèn)證。
四:Istio分布式追蹤實現(xiàn)原理
Istio 服務(wù)網(wǎng)格的核心是 Envoy,是一個高性能的開源 L7 代理和通信總線。在 Istio 中,每個微服務(wù)都被注入了 Envoy Sidecar,該實例負(fù)責(zé)處理所有傳入和傳出的網(wǎng)絡(luò)流量。因此,每個 Envoy Sidecar 都可以監(jiān)控所有的服務(wù)間 API 調(diào)用,并記錄每次服務(wù)調(diào)用所需的時間以及是否成功完成。
每當(dāng)微服務(wù)發(fā)起外部調(diào)用時,客戶端 Envoy 會創(chuàng)建一個新的 span。一個 span 代表一組微服務(wù)之間的完整交互過程,從請求者(客戶端)發(fā)出請求開始到接收到服務(wù)方的響應(yīng)為止。
在服務(wù)交互過程中,客戶端會記錄請求的發(fā)起時間和響應(yīng)的接收時間,服務(wù)器端 Envoy 會記錄請求的接收時間和響應(yīng)的返回時間。
每個 Envoy 都會將自己的 span 視圖信息發(fā)布到分布式追蹤系統(tǒng)。當(dāng)一個微服務(wù)處理請求時,可能需要調(diào)用其他微服務(wù),從而導(dǎo)致因果關(guān)聯(lián)的 span 的創(chuàng)建,形成完整的 trace。這就需要由應(yīng)用來從請求消息中收集和轉(zhuǎn)發(fā)下列 Header。
以上是“kubernetes中Istio的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。