Istio 架構
Istio 服務網格從邏輯上分為資料平面和控制平面,
- 資料平面 由一組智能代理(Envoy)組成,被部署為 sidecar,這些代理負責協調和控制微服務之間的所有網路通信,他們還收集和報告所有網格流量的遙測資料,
- 控制平面 管理并配置代理來進行流量路由,
Istio 核心組件
下圖展示了組成每個平面的不同組件:

Istio 中的流量分為資料平面流量和控制平面流量,
- 資料平面流量是指作業負載的業務邏輯發送和接收的訊息
- 控制平面流量是指在 Istio 組件之間發送的配置和控制訊息用來編排網格的行為
- Istio 中的流量管理特指資料平面流量
Envoy
Istio 使用 Envoy 代理的擴展版本,Envoy 是用 C++ 開發的高性能代理,用于協調服務網格中所有服務的入站和出站流量,Envoy 代理是唯一與資料平面流量互動的 Istio 組件,
Envoy 代理被部署為服務的 sidecar,在邏輯上為服務增加了 Envoy 的許多內置特性,例如:
- 動態服務發現
- 負載均衡
- TLS 終端
- HTTP/2 與 gRPC 代理
- 熔斷器
- 健康檢查
- 基于百分比流量分割的分階段發布
- 故障注入
- 豐富的指標
這種 sidecar 部署允許 Istio 提取大量關于流量行為的信號作為屬性,Istio 可以使用這些屬性來實施策略決策,并將其發送到監視系統以提供有關整個網格行為的資訊,
由 Envoy 代理啟用的一些 Istio 的功能和任務包括:
- 流量控制功能:通過豐富的 HTTP、gRPC、WebSocket 和 TCP 流量路由規則來執行細粒度的流量控制,
- 網路彈性特性:重試設定、故障轉移、熔斷器和故障注入,
- 安全性和身份驗證特性:執行安全性策略以及通過配置 API 定義的訪問控制和速率限制,
- 基于 WebAssembly 的可插拔擴展模型,允許通過自定義策略實施和生成網格流量的遙測,
Pilot
Pilot 為 Envoy sidecar 提供服務發現、用于智能路由的流量管理功能(例如,A/B 測驗、金絲雀發布等)以及彈性功能(超時、重試、熔斷器等),
Pilot 將控制流量行為的高級路由規則轉換為特定于環境的配置,并在運行時將它們傳播到 sidecar,Pilot 將特定于平臺的服務發現機制抽象出來,并將它們合成為任何符合 Envoy API 的 sidecar 都可以使用的標準格式,
下圖展示了平臺配接器和 Envoy 代理如何互動,

- 平臺啟動一個服務的新實體,該實體通知其平臺配接器,
- 平臺配接器使用
Pilot抽象模型注冊實體, Pilot將流量規則和配置派發給Envoy代理,來傳達此次更改,
Citadel
Citadel通過內置的身份和證書管理,可以支持強大的服務到服務以及最終用戶的身份驗證,您可以使用 Citadel 來升級服務網格中的未加密流量,使用 Citadel operator 可以執行基于服務身份的策略,
Galley
Galley 是 Istio 的配置驗證、提取、處理和分發組件,它負責將其余的 Istio 組件與從底層平臺(例如 Kubernetes)獲取用戶配置的細節隔離開來,
Istio 部署模型
您可以將單個網格配置為包括多集群,多集群部署可為您提供更大程度的隔離和可用性,但會增加復雜性, 如果您的系統具有高可用性要求,則可能需要集群跨多個可用區和地域, 對于應用變更或新的版本,您可以在一個集群中配置金絲雀發布,這有助于把對用戶的影響降到最低, 此外,如果某個集群有問題,您可以暫時將流量路由到附近的集群,直到解決該問題為止,

Istio 1.6 性能總結
Istio 負載測驗 網格包含了 1000 個服務和 2000 個 sidecar,全網格范圍內,QPS 為 70,000, 在使用 Istio 1.6 運行測驗后,我們得到了如下結果:
- 通過代理的 QPS 有 1000 時,Envoy 使用了 0.5 vCPU 和 50 MB 記憶體,
- 網格總的 QPS 為 1000 時,
istio-telemetry服務使用了 0.6 vCPU, - Pilot 使用了 1 vCPU 和 1.5 GB 記憶體,
- 90% 的情況 Envoy 代理只增加了 2.8 ms 的延遲,
參考文獻
https://preliminary.istio.io/docs/ops/deployment/architecture/
https://preliminary.istio.io/zh/docs/ops/deployment/architecture/
https://preliminary.istio.io/zh/docs/ops/deployment/deployment-models/
https://preliminary.istio.io/docs/ops/deployment/performance-and-scalability/
https://preliminary.istio.io/docs/ops/deployment/requirements/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/5204.html
標籤:其他
