十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹kubernetes中Istio的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

一:簡介
隨著微服務(wù)架構(gòu)的普及,越來越多的應(yīng)用已經(jīng)拆分成了微服務(wù)的架構(gòu)。而微服務(wù)架構(gòu)落地的一個(gè)難點(diǎn),就是如何讓服務(wù)和服務(wù)之間進(jìn)行穩(wěn)定的通信。
部署微服務(wù)之后,如何做服務(wù)的負(fù)載均衡、容錯(cuò)性、服務(wù)監(jiān)控、日志追蹤以及熔斷等功能都需要考慮周全。
為了讓業(yè)務(wù)團(tuán)隊(duì)返璞歸真,將所有精力集中在業(yè)務(wù)代碼而不是配合微服務(wù)組件寫大量非功能性需求的代碼,Istio應(yīng)運(yùn)而生。
Istio是谷歌、IBM、Lyft等公司貢獻(xiàn)的開源Service Mesh組件。它實(shí)現(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)身份斷言來實(shí)現(xiàn)服務(wù)間的身份驗(yàn)證。
通過在整個(gè)環(huán)境中部署一個(gè)特殊的sidecar代理(輔助容器),您可以將Istio支持添加到服務(wù)中。安裝了sidecar代理之后,(微)服務(wù)之間的所有網(wǎng)絡(luò)通信都通過這個(gè)代理。此外,所有的網(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ù)提供可驗(yàn)證身份,并提供保護(hù)服務(wù)流量的能力,使其可以在不同可信度的網(wǎng)絡(luò)上流轉(zhuǎn)。
除此之外,Istio針對可擴(kuò)展性進(jìn)行了設(shè)計(jì),以滿足不同的部署需要:
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é)收集和驗(yàn)證配置并將其傳播到各種 Istio組件。
3.Mixer:負(fù)責(zé)在服務(wù)網(wǎng)格上執(zhí)行訪問控制和使用策略,并從 Envoy 代理和其他服務(wù)收集遙測數(shù)據(jù)。
4.Istio-Auth:提供強(qiáng)大的服務(wù)間認(rèn)證和終端用戶認(rèn)證。
四:Istio分布式追蹤實(shí)現(xiàn)原理
Istio 服務(wù)網(wǎng)格的核心是 Envoy,是一個(gè)高性能的開源 L7 代理和通信總線。在 Istio 中,每個(gè)微服務(wù)都被注入了 Envoy Sidecar,該實(shí)例負(fù)責(zé)處理所有傳入和傳出的網(wǎng)絡(luò)流量。因此,每個(gè) Envoy Sidecar 都可以監(jiān)控所有的服務(wù)間 API 調(diào)用,并記錄每次服務(wù)調(diào)用所需的時(shí)間以及是否成功完成。
每當(dāng)微服務(wù)發(fā)起外部調(diào)用時(shí),客戶端 Envoy 會創(chuàng)建一個(gè)新的 span。一個(gè) span 代表一組微服務(wù)之間的完整交互過程,從請求者(客戶端)發(fā)出請求開始到接收到服務(wù)方的響應(yīng)為止。
在服務(wù)交互過程中,客戶端會記錄請求的發(fā)起時(shí)間和響應(yīng)的接收時(shí)間,服務(wù)器端 Envoy 會記錄請求的接收時(shí)間和響應(yīng)的返回時(shí)間。
每個(gè) Envoy 都會將自己的 span 視圖信息發(fā)布到分布式追蹤系統(tǒng)。當(dāng)一個(gè)微服務(wù)處理請求時(shí),可能需要調(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)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!