Istio组件以及架构
Istio
Istio的官網地址:Istio / 概念一些概念,理解它們有助于您更好地了解 Istio 系統的不同部分及其使用的抽象。https://istio.io/latest/zh/docs/concepts/
Istio架構圖
istio功能:
動態配置路由請求
故障注入
版本發布(灰度與金絲雀)
TCP流量轉移
請求超時
斷路器
鏡像流量
Istio安裝
生產環境選用default 模式的內置配置文件。
? ? ? ? ? ? ? ? ? ? ?????????????????????????????????不同模式安裝的內置配置文件信息
Istio組件:
Istio在邏輯上分為控制面和數據面:
控制面(istiod): 提供服務發現、配置和證書管理。Istiod 將控制流量行為的高級路由規則轉換為 Envoy 特定的配置,并在運行時將其傳播給 Sidecar。Istio 可以支持發現多種環境,如 Kubernetes 或 VM。
數據面(envoy): 一組部署為邊車的智能代理 (Envoy)組成。這些代理調解和控制微服務之間的所有網絡通信。他們還收集和報告所有網狀流量的遙測數據。
Pilot:
包含服務注冊(本身不提供服務注冊,只是提供一個API接口)以及路由規則的下發。
????????????????????????????????????????????????????????Pilot注冊中心圖
Platform Adapter:注冊中心平臺適配器,主要是對接外部不同注冊中心廠商。
Abstract model:對接外部不同的平臺,從特定平臺細節中解耦。
Envoy API:與pod里面的envoy代理進行通信,主要是發現服務發現以及控制流量規則信息給envoy。
Mixer:
責策略控制和遙測數據收集
Mixer在istio架構里面不是必須的。Mixer分為Policy和Telemetry兩個子模塊。
Policy用于向envoy提供準入策略控制,黑白名單限制,速率限制等相關策略;
Telemetry為envoy提供數據上報和日志搜集服務,用于監控告警以及日志查詢。
Citadel:
場景:適用支付場景
Citadel在istio架構中也不是必須的。負責istio的認證授權機制,同時需要和其它組件一起配合,參與其中的組件有Pilot、Envoy、Mixer。它們四個在整個流程中的作用分別為:
citadel:用于負責密鑰和證書的管理,在創建服務時會將密鑰以及證書下發到對應的envoy代理中;
pilot:接收用戶定義的安全策略并將其整理下發至服務旁的envoy代理中;
envoy:存儲citadel下發的密鑰和證書,保障服務之間的數據傳輸安全;.
mixer:負責核心功能為前置條件和遙測報告上報。
創建pod時候,citadel流程:
pod啟動的時候,citadel會下發密鑰和證書給envoy存儲,便于后續服務安全通信;
pilot服務發現和策略規則會以envoy api的方式暴露給envoy容器;
envoy跟envoy傳輸是安全的;
mixer檢查envoy請求并且收集envoy請求數據
Galley:
galley在控制面上向其他組件提供支持。galley作為負責配置管理的組件,并將這些配置信息提供給管理面的pilot和mixer服務使用,這樣其他管理面組件只用和galley進行交互,從而與底層平臺解耦。
Istio的流量管理介紹
Virtual services(虛擬服務)
虛擬服務讓您配置如何在服務網格內將請求路由到服務,這基于 Istio 和平臺提供的基本的連通性和服務發現能力。每個虛擬服務包含一組路由規則,Istio 按順序評估它們,Istio 將每個給定的請求匹配到虛擬服務指定的實際目標地址。
虛擬服務配置的流量是根據http的request請求(根據路由規則匹配的port、URL、headers、end-user、exact(精確匹配))進行匹配而指向目標規則。
虛擬服務里面的路由規則按照從上往下的順序進行選擇,第一條具有最高優先級。
Destination rules(目標規則)
與虛擬服務一起, 目標規則是 Istio 流量路由功能的關鍵部分。您可以將虛擬服務視為將流量路由給定目的地的方式,然后使用目的地規則來配置該目的地的流量會發生什么。目標規則在評估虛擬服務路由規則后應用,因此它們適用于流量的“真實”目標。
目標規則配置的流量是指向k8s集群里面的svc。
目標規則里面可以配置訪問后端svc的負載均衡策略(隨機Random、權重Weight、最小請求 Weighted least request、輪詢Round robin)進行負載。該負載均衡策略采用envoy的負載均衡策略。
Gateways(網關)
來管理網格的入站和出站流量,讓您指定要進入或離開網格的流量。網關配置應用于在網格邊緣運行的獨立 Envoy 代理,而不是與服務工作負載一起運行的 Sidecar Envoy 代理。Istio 的網關資源可以配置 4-6 層的負載均衡屬性,如對外暴露的端口、TLS 設置等。
網關一般配置的入站流量,即L7流量。
Service Entry(服務入口)
使用服務入口來添加一個入口到 Istio 內部維護的服務注冊中心。添加了服務入口后,Envoy 代理可以向服務發送流量,就好像它是網格內部的服務一樣。配置服務入口允許您管理運行在網格外的服務的流量,它包括以下幾種能力:
- 為外部目標 redirect 和轉發請求,例如來自 web 端的 API 調用,或者流向遺留老系統的服務。
- 為外部目標定義重試、超時和故障注入策略。
- 添加一個運行在虛擬機的服務來擴展您的網格。
Sidecar
Istio 讓每個 Envoy 代理都可以訪問來自和它關聯的工作負載的所有端口的請求,然后轉發到對應的工作負載。您可以使用?sidecar 配置去做下面的事情:
- 微調 Envoy 代理接受的端口和協議集。
- 限制 Envoy 代理可以訪問的服務集合。
網絡彈性和測試
超時
超時是 Envoy 代理等待來自給定服務的答復的時間量,以確保服務不會因為等待答復而無限期的掛起,并在可預測的時間范圍內調用成功或失敗。HTTP 請求的默認超時時間是 15 秒,這意味著如果服務在 15 秒內沒有響應,調用將失敗。
重試
重試設置指定如果初始調用失敗,Envoy 代理嘗試連接服務的最大次數。通過確保調用不會因為臨時過載的服務或網絡等問題而永久失敗,重試可以提高服務可用性和應用程序的性能。重試之間的間隔(25ms+)是可變的,并由 Istio 自動確定,從而防止被調用服務被請求淹沒。HTTP 請求的默認重試行為是在返回錯誤之前重試兩次。
熔斷
熔斷器是 Istio 為創建具有彈性的微服務應用提供的另一個有用的機制。在熔斷器中,設置一個對服務中的單個主機調用的限制,例如并發連接的數量或對該主機調用失敗的次數。一旦限制被觸發,熔斷器就會“跳閘”并停止連接到該主機。使用熔斷模式可以快速失敗而不必讓客戶端嘗試連接到過載或有故障的主機。
故障注入(包含延遲、終止功能)
?Istio 的故障注入機制來為整個應用程序測試故障恢復能力。故障注入是一種將錯誤引入系統以確保系統能夠承受并從錯誤條件中恢復的測試方法。
?
總結
以上是生活随笔為你收集整理的Istio组件以及架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 渗透中 PoC、Exp、Payload、
- 下一篇: 使用AFS, Active Direct