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