Istio是Google、IBM 和 Lyft一起開發的開源專案,Istio是希臘語,意思是起航
或是帆船
,跟kubernetes是有相關連的。
Istio 是 開源的服務網格 ,是這幾年來使用k8s的開發人員會常常聽到的組合 k8s + Istio
,為什麼Istio那麼熱門~~因為它提供了不限語言平台,簡單的把應用程式網路功能自動化,Istio也支援目前檯面上的公有雲(ex eks,aks,gcp..etc)。
Istio是個超熱門開源專案,不管是排除issue或是更版的時間都很神速,以個人安裝版本,今年年初安裝時的istio 1.8.x到現在Istio 1.11.3 @ 2021/09/23..直接跨了三個小版號 ,缺點就真的是追不完的更新QQ...不知道明年會不會有架構性的大改版..QQ。
- 提供一致的服務網路管理體驗 : 網路業者能統一管理旗下所有服務的網路,而不必增加開發人員負擔。
- 運用 Istio 的優點保護服務 : 安全服務業者可輕鬆地實施服務對服務的安全防護機制,包括驗證、授權和加密。
- 提高應用程式效能 : 實施最佳做法 (如發布初期測試版本),並深入瞭解應用程式,藉此找出應集中在哪些地方投入心力才能提升效能。
還沒使用Istio前,service a需要寫設定連線到service b
使用後
圖片來源
service與sevice間的溝通都是透過envoy proxy進行處理,把溝通其他服務這層抽離出來,
service只做到邏輯處理,網路層一律使用envoy proxy統一處理。
Istio預設使用Envoy作為proxy,而Envoy基於c++開發,所以基本上效能應該是沒什麼問題,不像某j..那吃的資源量,上面的架構圖就清楚看的出來,Envoy主要是協調服務的進
與出
。
Envoy proxy是使用sidecar
的方式跟pod一起部署,sidecar就長的像下圖這樣子XD,istio就依附pod服務運行的意思
圖片來源
Envoy有下列特性
- 動態服務發現(Dynamic service discovery)
- 負載均衡(Load balancing)
- TLS 終端(TLS termination)
- HTTP/2 與 gRPC 代理(HTTP/2 and gRPC proxies)
- 熔斷器(Circuit breakers)
- 健康檢查(Health checks)
- 基於百分比流量分割的分階段發佈(Staged rollouts with %-based traffic split)
- 故障注入(Fault injection)
- 豐富的指標(Rich metrics)
istio在1.5版後把原本獨立的componet整合成istod(d是daemon的意思),裡面包含了Pilot
,Citadel
跟Galley
三個componet,從這例子就很明顯看的出來,istio就是個一言不合就大改的專案QQ
以上為istio的簡簡簡述