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