華爲雲講解:Istio架構與原理
Service Mesh
Kubernetes
-
Kubernetes 提供雲平臺基礎設施層強大容器編排與調度能力
服務部署與彈性伸縮: Depoyment
服務拆分與服務發現:Service
-
Kubernetes提供簡單的負載均衡
負載均衡:基於IPVS或者Iptables的簡單均衡機制
在原始的時候一個應用跑到集羣上,可能會把應用服務治理的邏輯寫到代碼裏面,這樣就會跟服務耦合在一起了,給開發帶來麻煩,能不能把服務治理才分開放到SDK,比如SpringCloud,但在這樣還是要放在應用裏面。還是麻煩,能不能把服務的治理獨立出來,出現了Service Mesh。
他可以在Kubernetes上完美的補氣服務治理
Istio 架構基礎
上面的是服務簡稱“數據面”,下面是“控制面”
Proxy 就是服務代理用的Envoy
Pilot
Istio 基本概念
Gateway :服務網關轉發到VitualService主要是根據我們的請求
,一個服務有三個版本v1v2v3根據條件轉發到哪個版本,
VitualService把請求導入到某個v1版本之後這會就走到
DestinationRule主要工作是假設v1有三個副本負載均衡策略使用和最小連接的配置
看圖說話:VirtualService 功能有個服務叫reviews ,訪問reviews的URL帶“/wpcatlog”或者“/cosumercatlog”就是走match的route,而且會把URL重寫成“/newcatalog” 然後導入到route的reviews:v2版本,沒有則走默認的route 也就是reviews:v1版本
看圖說話:DestinationRule 是在VirtualService導入指定服務的版本之後,進行一個實例副本數的負載,限流策略等。 trafficPolicy 是定義默認策略 LEAST_CONN 是最小連接,subsets 是指定哪些版本使用這個鏈接策略。圖中v1v2 都是使用默認策略。二v3 裏面有定義了一個trafficPolicy,策略是輪訓。就近規則。
VirtualService裏面綁定了Gateway,建立綁定關係
ServiceEntry 如果想訪問外網也是需要建立這個東西
Istio & Kubernetes :架構結合
運行一個Istio集羣
運行官方提供的bookinfo 例子,
這個官方提供的bookinfo 應用,每個pod有兩個實例,一個是應有,另一個就是sidecar
。在剛創建的Init時候IPtables 那邊做一些規則,然後通過sidecar
帶到了pod裏面,通過規則把進出口的流量,都導到Envoy上