對比 Istio,Linkerd 和 Consul

語言: CN / TW / HK

對比 Istio,Linkerd 和 Consul

原文連結: Istio vs. Linkerd vs. Consul (翻譯:鍾濤)

服務網格簡介

服務網格是應用程式元件和網路之間通過代理連線的基礎設施層。這些應用程式元件通常是微服務,但從無伺服器容器到虛擬機器或裸機上的傳統應用程式的任何工作負載都可以參與服務網格。每個元件之間不是通過網路直接通訊,而是通過代理來通訊。這些代理構成了資料平面,提供了許多功能,用於實現安全和流量策略,並對代理部署的服務進行遙測。閱讀更多關於 服務網格的功能

服務網格的功能包括:

  • 服務發現
  • 彈性:重試、異常檢測、斷路、超時等。
  • 客戶端負載平衡
  • L7 細粒度流量控制:按標題、目的地或源以及其他執行時資訊進行路由。
  • 為每個請求設定安全策略,而不是每個連線
  • 基於 L7 元資料的身份驗證、速率限制、任意策略
  • 強(L7)工作負載標識
  • 服務到服務授權
  • 指標、日誌和跟蹤

我們相信,這項調查表明,Istio 是最有能力、最靈活、應用最廣泛的服務網格,也是最受社群支援的服務網格。因此,Istio 在各個領域都在穩步改進。Consul 和Linkerd 屬於輕量級設計,社群並不廣泛支援。因此,它們在最初可能更容易實現,並且在過去具有效能優勢,但它們可能不太適合要求苛刻的用例和長期使用。

服務網格的工作模型

服務網格遵循“中心輻射”模式,即使用代理或工作節點實現特定規則,並使用中央伺服器管理代理。Istio和Consul使用Envoy代理,而Linkerd使用其定製的代理。這些代理在應用程式級別的資料平面中工作。他們負責繁重的任務,如處理傳入流量、連線服務和細粒度安全策略。網路通訊和安全管理在集中控制平面完成。

服務網格比較

IT部門通常會根據特定的標準,以找到合適的服務網格軟體。本文將提供一個比較圖表,以幫助IT架構師快速選擇和採用正確的服務網格軟體。

實現服務網格最著名的開源工具有: Istio , Linkerd , 和 Consul 。Istio 和 Consul 都使用 Envoy 作為資料代理。Linkerd有自己的開源代理。我們將在本文中比較這三個著名的服務網格專案。

我們基於以下六個標準比較服務網格軟體:流量管理、安全管理、可擴充套件性、可見性和可觀察性、安裝和實現、可擴充套件。並分享了我們的觀點。

流量管理

Istio、Consul 和 Linkerd 都提供基本的流量管理功能,如負載平衡、路由和服務發現。並且支援HTTP、gRPC代理、TCP代理和協議檢測。

Istio 和 Consul 使用的 Envoy 代理實現了比 Linkerd 更多的 HTTP 特定功能。Envoy 的 HTTP connection manager 提供了對HTTP/1.1、WebSocket、HTTP/2 和 HTTP/3 的支援,而 Linkerd 暫不支援HTTP/3。

相較於Linkerd,因為 Istio 和 Consul 都使用了 Envoy,它們還具有更細粒度的流量管理功能,如斷路、重試、超時、故障注入、延遲注入等功能。

Istio 是唯一一款支援 Kubernetes 的軟體,無論是部署在公有云(例如 AWS,GCP,Azure)的 Kubernetes 還是私有云的 Kubernetes。這使得 Istio 成為許多大型企業的首選軟體,因為大型企業既有支援雲原生的應用程式,也有許多單體應用程式。

架構師和工程師喜歡 Istio 的理由:

  • 前端/邊緣代理: Istio 可以根據執行時的值重定向請求,使金絲雀和藍/綠等部署策略的實現變得容易。
  • 支援入口閘道器: Istio 提供 Istio 入口閘道器,並支援第三方 ingress controllers 管理 Kubernetes 叢集中的外部服務訪問。
  • 多叢集通訊: 易於使用 Istio 服務網格連線跨叢集或區域的K8S服務。
  • 多站點故障切換: 由於支援所有公共雲,Istio 可用於自動故障切換,以支援基於雲的應用程式的高可用性和更大的彈性。

安全管理

Istio、Consul 和 Linkerd 都支援身份驗證和授權功能,例如:

  • 基於mTLS的身份驗證,確保網路通訊的安全性
  • 基於JWT的身份驗證可保護來自外部和內部使用者的應用程式
  • 定義細粒度的安全策略,例如工作負載到工作負載,終端使用者到工作負載的授權和訪問控制

然而,由於 Istio 提供了與雲平臺和虛擬機器的整合,可以使用 Istio 的 mTLS的身份驗證,構建應用與外部客戶機或其他Kubernetes叢集或虛擬機器之間的通訊。以下是為什麼安全經理更喜歡 Istio 的原因,以確保零信任安全模型:

  • FIPS相容: Istio的許多實現都是FIPS相容的,屬於FIPS遵守的中等水平,而 Tetrate 的實現也是FIPS認證的,且屬於 FIPS 的最高水平。這使得 Istio 成為遵守 2014年《聯邦資訊保安現代化法案》的組織的最佳選擇。請參閱 Refer to how Istio helps the Federal Government and the Department of Defense secure their internal applications .
  • CVEs的透明度: Istio 與國家CVE資料庫共享漏洞,網路安全管理人員可以直接參考國家CVE資料庫中的最新安全缺陷和問題,已知曉 Istio 存在的安全問題。此外,Istio 會及時實施安全補丁,並及時通知 Istio 使用者。
  • 靈活性: Istio 可以和任何的身份驗證提供商整合,如 OpenID 連線提供商,例如 KeyClope、OAuth 2.0、Google Auth、Firebase Auth等。

美國國家標準與技術研究所(NIST)使用 Istio 作為參考架構,為聯邦機構實施安全標準,實現零信任。請參閱 Security Strategies for Microservices , Building Secure Microservice using Service Mesh Architecture , Attributed-based access control for microservices using Service mesh , Implementation of DevSecOps for a Microservice using Service Mesh

安裝和使用

無需更改應用程式程式碼,就可以安裝和使用服務網格。但一般來說,服務網格的設定和維護是一個難題。並且運維團隊特別關注軟體的安裝、使用和效能問題。

Istio、Consul 和 Linkerd 都可以使用 Helm charts 或 operators 在Kubernetes環境中輕鬆完成安裝。由於Linkerd是輕量級的,具有較少的功能和簡單的架構,因此它比Istio和Consul更易於維護和執行。Istio通常被認為是“重量級”的,主要是因為它支援更多的工作負載、公共雲和虛擬機器。

但隨著時間的推移,Istio已經提高了效能,並努力以最小的資源開銷提供更多的網路管理和安全優勢。該專案還旨在支援具有高請求率的大型服務網格,同時增加最小延遲。

可伸縮性

在按需擴充套件方面,每種服務網格都具有獨特的優勢。

關於資料平面的可擴充套件性,Linkerd 的擴充套件速度比 Istio 和 Consul 快。主要原因是 Linkerd 的輕量級架構,它不支援高階流量管理和細粒度安全管理功能。

從資料平面的角度來看,在資源受限的環境中,Envoy 可能會比 Linkerd 消耗更多的 CPU。然而,Envoy 遵循一種實用的設計,適合在真實的 IT 環境中實現更快的效能。Envoy 的維護人員在關鍵路徑的代理效能調優方面做了出色的工作。效能將因所使用的功能、Envoy執行的環境和可用的計算機資源而大不相同。

此外,請注意,效能僅與做橫向對比。如果此軟體不能滿足您的所有需求,也不能達到與競爭對手相同的效能標準,那麼它就不會以一種有用的方式更快或更輕。如果您的用例(現在和將來)完全由其功能集滿足,那麼您只能考慮重量更輕、功能更少的替代方案。在企業實施或技術要求苛刻的環境中,這種情況不太可能發生。

同時,請注意,需在類似產品的基礎上做效能比較。一款軟體不可能既輕量級,效能高,且功能全。

我們將遵循 best practices for benchmarking Envoy ,以科學的流程進行效能測試。

Istio 負載測試,考慮了由1000個微服務和2000個 sidecars 組成的服務網格。每秒向網格傳送70000個請求,並測量響應時間。使用 Istio 1.14.1執行測試後,資料平面和控制平面的觀察結果如下:

  • 資料平面效能: Envoy 代理每秒處理1000個請求,使用了 0.35個vCPU和40 MB記憶體。還觀察到Envoy代理,後 10% 的請求延遲增加了 2.65毫秒。
  • 控制平面效能: Istiod 使用1個vCPU和1.5 GB記憶體。

您可以在 這裡 找到 Istio 的詳細效能測試結果。

可見性和可觀測性

分散式服務的端到端可見性和可觀察性對於運維團隊來說至關重要。SRE 和 Ops團隊需要服務網格中的服務級別可見性、跟蹤和監控能力。Istio、Consul 和 Linkerd 都提供了對應用程式效能健康狀況的可見性,測量網路行為並向利益相關者出具報告。

Istio、Consul 和 Linkerd 生成監控所需的關鍵指標,如HTTP、HTTP/2和gRPC流量的延遲、錯誤和飽和度。服務網格軟體提供的指標可以直接從命令列介面(CLI)或 Grafana 儀表板檢視,也可以使用 Prometheus 來檢視。

與 Linkerd 相比,Istio 和 Consul 都提供了更詳細的網路指標。Envoy代理在 Istio 和 Consul 中形成資料平面,為Ops團隊提供足夠的服務級別指標、代理級別指標和分散式跟蹤,更快地診斷流量管理配置問題。由於Envoy也是一個廣泛使用的資料平面,Ops團隊更容易從社群中找到配置或效能異常的解決方案。

與 Linkerd 不同,Istio 提供了對日誌工具的支援,如 Zipkin , Jaeger , Lightstep , 和 Datadog

如果您感興趣,更多 Istio 命令,請參考 detailed overview

人氣

Istio 是社群內外最流行的服務網格軟體。這意味著更多的創新和更積極的功能開發。有證據表明,與任何其他服務網格相比,Istio 是全球架構師、DevOps團隊和安全專業人員最廣泛使用的。雖然使用情況可能因行業有所不同,但 Istio 目前已在金融服務行業和美國政府使用,並在關鍵領域取得成功。因此,Istio 可能會全面保持或增加其領導地位。

谷歌趨勢 / Google Trending

為了評估這些專案的受歡迎程度,我們在Google Trends上搜索了關鍵詞 “Istio service mesh”、“Consul service mesh” 和 “Linkerd service mesh”。(我們之所以使用較長的短語,是因為“Consul”一詞本身被廣泛使用,並具有多種含義。)在過去五年左右的時間裡,Istio 服務網格的受歡迎程度直線上升,Consul 和 Linkerd 遠遠落後,尤其是 Linkerd。

谷歌趨勢顯示,Istio的活動遠遠領先於 Consul和 Linkerd。

https://trends.google.com/tren ... %2520

貢獻者的多樣性

除了更多的參與和貢獻外,Istio 還有各種各樣的貢獻者。雖然 Buoyant 和 Hashicorp 分別是 Linkerd 和 Consul 專案的主要貢獻者,但對 Istio 的貢獻來自於不同的大型企業,如谷歌、IBM、埃森哲、VMware等,以及許多小型企業。

| Service Mesh | Total Contributions | Major Contributors | References |

| :----------- | :------------------ | :------------------------------------------ | :----------------------------------------------------------- |

| Istio | 449,975 | Google, IBM, Huawei, Red Hat, Tencent, etc. | Click here |

| Linkerd | 103,122 | Buoyant | Click here |

| Consul | NA | Hashicorp | Click here |

Git 訂閱

與同行相比,Istio 擁有最多的 Git 觀星者。觀星者越多,開源社群的參與度就越高。

| Service Mesh | Git Stargazers | Reference |

| :----------- | :------------- | :-------------------------------------------------------- |

| Istio | 30,659 | Click here |

| Consul | 24,962 | Click Here |

| Linkerd | 8,560 | Click here |

捐款管理

Istio 專案的指導委員會實行良好治理,使 Istio 僅由貢獻者和社群成員驅動。指導委員會至少代表七個不同的組織。這避免了任何供應商對 Istio 專案擁有多數投票控制權,而不管貢獻大小。

沒有其他服務網格軟體委員會採用如此多樣化的治理來滿足社群的利益。Envoy 專案還具有不同的治理,最近添加了一個新專案, Envoy Gateway ,其中包括 Tetrate 作為指導委員會的一部分。

欲瞭解更多資訊,請閱讀 the Istio governance structure

對比 Istio vs Linkeder vs Consul

延展性

所有服務網格軟體都是模組化和可擴充套件的。但由於 Istio 比其他服務網格更受歡迎,許多開源專案都是通過 Istio 實現的。一些值得注意的專案包括:

  • Slime,使用 Istio 和 Envoy 的智慧服務管理器
  • MOSN,提供雲本地邊緣閘道器和代理
  • Aeraki,為除HTTPs和gRPC之外的所有L7協議提供支援
  • WASM,開發 WebAssembly 外掛並增強服務網格功能

這裡 您可以找到所有基於Istio生態系統的開源專案。

總結

隨著越來越多的組織使用微服務並採用多雲技術,服務網格在應對新的網路複雜性和安全挑戰方面變得越來越重要。在選擇服務網格軟體時,組織必須仔細評估這些選項,以避免IT專案的失敗。

在仔細評估了三種流行的服務網格的各種功能後,我們認為 Istio 提供了比其同類產品更豐富的功能集。如果您是一個小型的IT初創公司,只有一個小型的DevOps和安全團隊,並且您並沒有在一個特別具有挑戰性的安全環境中執行,並且在可預見的未來您能夠以這種方式執行,那麼輕量級的Linkerd或Consul可能是更優選擇。但如果您有一個大規模的IT系統和一個龐大的團隊,或者你認為安全是首要任務,那麼 Istio 是更安全的選擇。

鑑於 Istio 是最受歡迎和廣泛實施的服務網格,整體體驗更佳。關於可擴充套件性和效能,我們認為 Istio 和 Envoy 最適合大規模的產品系統。