Service Mesh對比:Istio與Linkerd

根據CNCF的最新年度調查,不少組織對Service Mesh表現出很高的興趣,而且有一部分已經在生產環境中使用它們。你可能不知道Linkerd是市場上第一個Service Mesh,可是Istio使Service Mesh更受歡迎。這兩個項目都是最前沿的項目,並且競爭很是激烈,所以很難選擇一個項目。在本篇文章中,咱們將和你一塊兒瞭解Istio和Linkerd架構,組件,並比較它們的產品以幫助你作出明智的決定。算法

Service Mesh簡介

在過去的幾年中,微服務架構已成爲軟件設計中流行的樣式。在這種架構中,咱們將應用程序分解爲可獨立部署的服務。這些服務一般是輕量級的,多語言的,而且一般由各類職能團隊進行開發部署。當某些服務數量增長,難以管理且愈來愈複雜時,微服務架構將一直有效。但這也在管理安全性,網絡流量控制和可觀察性等各個方面帶來了挑戰。後端

Service Mesh能夠很好地幫助應對這些挑戰。安全

  • Service Mesh 用於描述組成應用程序的微服務及其之間的交互。隨着服務數量的增長和複雜性的增長,擴展和管理變得愈來愈困難。Service Mesh能夠爲微服務架構提供服務發現,負載均衡,故障恢復,指標和監視。微信

  • Service Mesh 一般還可以知足更復雜的需求,例如A/B測試,金絲雀發佈,速率限制,訪問控制和端到端身份驗證。網絡

  • Service Mesh 提供了一種輕鬆建立服務網絡的方式,該網絡具備負載均衡,服務到服務的身份驗證,監視等功能,而微服務代碼更改不多或沒有更改。架構


接下來,讓咱們對比一下Istio和Linkerd的架構。請注意,兩個項目都在快速發展,本文基於Istio版本1.6和Linkerd版本2.7。app

Istio

Istio是一個開源平臺,提供了做爲Service Mesh的完整解決方案,提供了一種統一的方式來保護(secure),鏈接(connect)和監視(monitor)微服務。它獲得了IBM,Google和Lyft等行業領導者的支持。負載均衡

Istio是最流行,最完整的解決方案之一,其高級產品適用於各類規模的企業。Istio是Kubernetes的一等公民,被設計爲獨立於平臺的模塊化系統。有關Istio的快速入門,請參閱咱們之前的文章。dom

架構(Architecture)

組件(Components)

Envoy是Lyft用C ++語言編寫的高性能代理,它能夠代理Service Mesh中全部服務的全部入站和出站流量。它做爲Sidecar代理部署。socket

Envoy提供如下功能:

  • 動態服務發現

  • 負載均衡

  • TLS終止

  • HTTP/2和gRPC代理

  • 斷路器

  • 健康檢查

  • 按百分比分配流量

  • 故障注入

  • 豐富的指標


在較新的Istio版本中,Sidecar代理也承擔了了一部分Mixer的工做。在早期版本的Istio(<1.6)中,須要使用Mixer從服務網格收集數據信息。

Pilot爲Sidecar代理,流量管理功能和彈性伸縮提供服務發現。它將控制流量行爲的高級路由規則轉換爲envoy的配置。

Citadel經過內置的身份和憑據管理實現了用戶身份驗證。

Galley 在Istio中配置驗證規則(Pilot、Citadel配置的規則) 。

核心功能

  • 流量管理 -智能流量路由規則,流量控制和服務級別屬性(如斷路器,超時和重試)的管理。它使咱們可以輕鬆設置A/B測試,金絲雀發佈,滾動升級等。

  • 安全性 —在服務之間提供安全的通訊通道,並管理身份驗證,受權和加密。

  • 可觀察性 -強大的跟蹤,監視和日誌記錄功能提供了可見性。它有助於快速有效地檢測和解決問題。Istio還能夠與Prometheus,Grafana,Jaeger 和Kiali等應用程序集成。

Linkerd

Linkerd是一個開源的輕量級服務網格。因爲在2.0版本中徹底用Rust語言重寫,以使其超輕便且高性能,它可以提供運行時調試,可觀察性的能力。

Architecture

Linkerd具備三個組件(Components)-UI,數據平面(Data Plane)和控制平面(Control Plane)。它經過在每一個服務實例旁邊安裝輕量級透明對象來工做。

控制平面(Control Plane)

提供核心功能。它聚合數據,提供面向用戶的API。如下是控制平面(Control Plane)的組件(Components)。

  • 控制器( Controller) –它由一個公共API容器組成,該容器提供CLI和儀表板的API。

  • 目標( Destination) –數據平面(Data Plane)中的每一個代理都將調用此組件(Components)以查找將請求發送到哪一個位置。它能夠配置路由指標,重試和超時信息。

  • 身份( Identity)–它提供了一個證書頒發機構( Certificate Authority),該證書頒發機構接受來自代理的CSRs請求並返回身份簽名的證書。它也提供了mTLS功能。

  • 代理注入器( Proxy Injector) –它是一個准入控制器,用於查找帶有(linkerd.io/inject: enabled)註釋並更改pod信息添加一個具有代理功能的initContainer容器。

  • 服務配置文件驗證器( Service Profile Validator ) –這也是一個准入控制器,用於在保存新的服務配置文件以前對其進行驗證。

  • 點擊( Tap ) –它從CLI或儀表板接收請求,以實時監視請求和響應,以提供應用程序中的可觀察性。

  • Web –提供Web儀表板。

  • Grafana – Linkerd經過Grafana提供開箱即用的儀表板。

  • Prometheus –它經過/metrics在4191端口上抓取代理端點數據來收集和存儲全部Linkerd指標。

數據平面(Data Plane):

Linkerd數據平面(Data Plane)由輕量級代理組成,這些輕量級代理做爲sidecar容器部署。在Pod的初始化階段注入代理(請參見上面的代理注入器)。自從2.x徹底在Rust中重寫以來,該代理很是輕便且性能出色。這些代理攔截每一個Pod之間的通訊,以提供檢測和加密(TLS),而無需更改應用程序代碼。

代理功能:

  • HTTP,HTTP2和任意TCP協議的透明,零配置代理。

  • 自動爲HTTP和TCP流量導出Prometheus指標。

  • 透明的零配置的WebSocket代理。

  • 自動,可感知延遲的7層負載均衡。

  • 非HTTP流量的自動4層負載均衡。

比較方式

特徵 Istio Linkerd
易於安裝 各類配置選項和靈活性可能會使團隊不知所措 開箱即用的配置,安裝相對容易
平臺 Kubernetes,虛擬機 Kubernetes
支持的協議 gRPC,HTTP/2,HTTP/1.x,Websocket和全部TCP流量 gRPC,HTTP/2,HTTP/1.x,Websocket和全部TCP流量
入口控制器 Envoy,Istio網關自己 Linkerd自己不提供入口功能
多集羣和擴展支持 經過各類配置選項支持多集羣部署,並能夠在Kubernetes集羣外部擴展網格 從2.8版本開始,多羣集部署趨於穩定。
Service Mesh接口(SMI)兼容性 經過第三方CRD 本機用於流量拆分和指標,不用於流量訪問控制
監控功能 功能豐富 功能豐富
追蹤支持 Jaeger, Zipkin 支持OpenCensus的全部後端
路由功能 各類負載均衡算法(Round-Robin, Random Least Connection), 支持基於百分比的流量拆分,支持基於報頭和路徑的流量拆分 支持EWMA負載均衡算法,經過SNI支持基於百分比的流量拆分
彈性 斷路器,重試和超時,故障注入,延遲注入 無斷路器,無延遲注入支持
安全 mTLS支持全部協議,可使用外部CA證書/密鑰,支持受權規則。 除TCP以外,還支持mTLS,可使用外部CA /密鑰,但尚不支持受權規則
性能 在最新的1.6版本中,Istio的資源佔用量愈來愈大,延遲獲得了改善。 Linkerd的設計很是輕巧,根據某些第三方基準測試,它比Istio快3-5倍。
企業支援 不適用於OSS版本。若是您將Google的GKE與Istio結合使用,或者將Red Hat OpenShift與Istio做爲Service Mesh使用,則可能會獲得各個供應商的支持。 開發了Linkerd OSS版本的Buoyant提供了完整的企業級工程,支持和培訓

結論

Service Mesh正在成爲雲原生解決方案和微服務架構中的重要組成部分。它使你可以完成全部繁重的工做,例如流量管理,彈性和可觀察性,並減輕開發人員對業務邏輯的關注。

Istio和Linkerd都已經成熟,並已被多家企業用於生產環境。對軟件項目需求的計劃和分析對於選擇要使用的Service Mesh相當重要。請在起始階段花費足夠的時間作好技術選型,由於在後期再作調整改變會很複雜。


END

Kubernetes CKA實戰培訓班推薦:

北京站:9月11-13日

上海站:9月18-20日


本文分享自微信公衆號 - K8S中文社區(k8schina)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索