01-02istio架构概念了解
istio服務(wù)網(wǎng)格在邏輯上分為數(shù)據(jù)平面和控制平面。
- 數(shù)據(jù)平面由一組部署為邊車的智能代理(Envoy)組成。這些代理負(fù)責(zé)協(xié)調(diào)和控制微服務(wù)之間的所有網(wǎng)絡(luò)通信。他們還收集和報(bào)告所有網(wǎng)格流量的遙測(cè)數(shù)據(jù)。
- 控制平面管理并將代理配置為路由流量。
下圖顯示了構(gòu)成每個(gè)平面的不同組件:(下圖來(lái)自官網(wǎng))
Istio中的交通分為數(shù)據(jù)平面交通和控制平面交通。數(shù)據(jù)平面流量是指工作負(fù)載的業(yè)務(wù)邏輯發(fā)送和接收的消息。控制平面交通是指在Istio組件之間發(fā)送的配置和控制消息來(lái)對(duì)網(wǎng)格的行為進(jìn)行編程。Istio中的流量管理專門指數(shù)據(jù)平面流量。
1. 組件
1.1 Envoy
Istio使用Envoy代理的擴(kuò)展版本。Envoy是用c++開發(fā)的高性能代理,用于協(xié)調(diào)服務(wù)網(wǎng)格中所有服務(wù)的所有入站和出站流量。Envoy代理是唯一與數(shù)據(jù)通信交互的Istio組件。
Envoy代理被部署為服務(wù)的邊車,從邏輯上講,它增加了Envoy的許多內(nèi)置特性:
Dynamic service discovery 動(dòng)態(tài)服務(wù)發(fā)現(xiàn) Load balancing 負(fù)載均衡 TLS termination TLS 終止 HTTP/2 and gRPC proxies HTTP / 2 和gRPC代理 Circuit breakers 斷路器 Health checks 健康檢查 Staged rollouts with %-based traffic split 使用基于百分比的流量拆分的分階段推出 Fault injection 斷層注入 Rich metrics 豐富的指標(biāo)這種sidecar部署允許Istio提取大量關(guān)于流量行為的信號(hào)作為屬性。Istio可以使用這些屬性來(lái)執(zhí)行策略決策,并將它們發(fā)送到監(jiān)控系統(tǒng),以提供關(guān)于整個(gè)網(wǎng)格的行為的信息。
sidecar代理模型還允許您向現(xiàn)有部署添加Istio功能,而不需要重新架構(gòu)或重寫代碼。
由envoy代理啟用的一些Istio功能和任務(wù)包括:
交通管制特點(diǎn):使用豐富的路由規(guī)則執(zhí)行細(xì)粒度的流量控制HTTP,gRPC,WebSocket 和 TCP 流量。
網(wǎng)絡(luò)彈性功能:設(shè)置重試、故障轉(zhuǎn)移、斷路器和故障注入。
安全和身份驗(yàn)證功能:實(shí)施安全策略并實(shí)施通過配置 API 定義的訪問控制和速率限制。
基于 Web Assembly 的可插拔擴(kuò)展模型允許自定義策略實(shí)施和網(wǎng)格流量遙測(cè)生成。
1.2 Pilot 流量管理、服務(wù)發(fā)現(xiàn)
Pilot針對(duì)提供智能路由(比如,A/B測(cè)試、金絲雀部署)的Envoy Sidecar,流量管理的能力提供了服務(wù)發(fā)現(xiàn)。針對(duì)彈性提供了超時(shí),重試,斷路保護(hù)等功能。
Pilot將控制流量行為的高級(jí)路由規(guī)則轉(zhuǎn)換為特定于環(huán)境的配置,并在運(yùn)行時(shí)將它們傳播到邊車。Pilot將特定于平臺(tái)的服務(wù)發(fā)現(xiàn)機(jī)制抽象出來(lái),并將它們合成為任何符合Envoy API的sidecar都可以使用的標(biāo)準(zhǔn)格式。
下圖顯示了平臺(tái)適配器和Envoy代理如何交互:
這種耦合允許istio運(yùn)行在比如kubernetes、Consul或者Nomad等平臺(tái)上。
1.3 Citadel 證書管理
Citadel支持強(qiáng)大的服務(wù)對(duì)服務(wù)和終端用戶身份驗(yàn)證,內(nèi)置身份和憑證管理。您可以使用Citadel來(lái)升級(jí)服務(wù)網(wǎng)格中的未加密流量。使用Citadel,運(yùn)營(yíng)商可以執(zhí)行基于服務(wù)身份的策略,而不是基于相對(duì)不穩(wěn)定的第3層或第4層網(wǎng)絡(luò)標(biāo)識(shí)符。從0.5版開始,您可以使用Istio的授權(quán)特性來(lái)控制誰(shuí)可以訪問您的服務(wù)。
1.4 Gallery 注入istio
Galley是Istio的配置驗(yàn)證、注入、處理和分發(fā)組件。它負(fù)責(zé)將其余的Istio組件與從底層平臺(tái)(例如Kubernetes)獲取用戶配置的細(xì)節(jié)隔離開來(lái)。
2. 設(shè)計(jì)目標(biāo)
-
最大化的透明度:為了采用Istio,操作人員或開發(fā)人員需要做盡可能少的工作,才能從系統(tǒng)中獲得真正的價(jià)值。為此,Istio可以自動(dòng)將自己注入到服務(wù)之間的所有網(wǎng)絡(luò)路徑中。Istio使用sidecar代理來(lái)捕獲流量,并在可能的情況下,在不更改已部署的應(yīng)用程序代碼的情況下,自動(dòng)對(duì)網(wǎng)絡(luò)層進(jìn)行編程,以通過這些代理路由流量。在Kubernetes中,代理被注入到pods中,通過編寫iptables規(guī)則捕獲流量。一旦sidecar代理被注入并且流量路由被處理,Istio可以協(xié)調(diào)所有的流量。這個(gè)原則也適用于性能。當(dāng)將Istio應(yīng)用于部署時(shí),操作人員會(huì)看到所提供功能的資源成本的最小增加。組件和api的設(shè)計(jì)必須考慮到性能和可伸縮性。
-
擴(kuò)展性:隨著操作人員和開發(fā)人員越來(lái)越依賴于Istio提供的功能,系統(tǒng)必須隨著他們的需求而增長(zhǎng)。當(dāng)我們繼續(xù)添加新特性時(shí),最大的需求是擴(kuò)展策略系統(tǒng)的能力,與其他策略和控制源的集成,以及將關(guān)于網(wǎng)格行為的信號(hào)傳播到其他系統(tǒng)進(jìn)行分析的能力。策略運(yùn)行時(shí)支持用于插入其他服務(wù)的標(biāo)準(zhǔn)擴(kuò)展機(jī)制。
-
可移植性:使用Istio的生態(tài)系統(tǒng)在許多方面都有所不同。Istio必須在任何云環(huán)境或本地環(huán)境中以最小的努力運(yùn)行。將基于isti的服務(wù)移植到新環(huán)境的任務(wù)必須是瑣碎的。使用Istio,您可以操作部署到多個(gè)環(huán)境中的單個(gè)服務(wù)。例如,可以在多個(gè)云上部署冗余。
-
策略的一致性:策略在服務(wù)之間的API調(diào)用上的應(yīng)用提供了對(duì)網(wǎng)格行為的大量控制。然而,將策略應(yīng)用于API級(jí)別上不一定表示的資源也同樣重要。例如,對(duì)ML訓(xùn)練任務(wù)消耗的CPU數(shù)量應(yīng)用配額比對(duì)發(fā)起工作的調(diào)用應(yīng)用配額更有用。為此,Istio使用自己的API將策略系統(tǒng)維護(hù)為一個(gè)獨(dú)立的服務(wù),而不是將策略系統(tǒng)集成到代理sidecar中,從而允許服務(wù)根據(jù)需要直接與之集成。
總結(jié)
以上是生活随笔為你收集整理的01-02istio架构概念了解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 固晶机及其系统(LED封装、芯片半导体封
- 下一篇: WakeOnLAN(WOL)测试