天天看點

Istio vs. Linkerd:2023 年最佳服務網格

作者:科技狠活與軟體技術

通過探索每個服務網格軟體處理流量、安全性、可觀察性、可擴充性及其社群支援水準的能力,了解哪種服務網格軟體是最好的。

服務網格簡介

服務網格是一個基礎設施層,用于從應用程式中抽象出網絡和安全性,以實作更好的可管理性和實施。服務網格有助于簡化跨雲和容器技術的分布式應用程式日益增長的網絡複雜性。

服務網格是使用軟體代理(sidecar 代理)與應用程式或微服務一起實作的。這些邊車用于促進應用程式堆棧之間的服務到服務通信。随着網絡使用邊車從應用程式邏輯中抽象出來,安全和流量管理将很容易從一個中央位置進行管理。sidecar 隊列稱為資料平面,而管理 sidecar 的主機稱為控制平面。

最近,随着雲原生應用程式的興起,Kubernetes 基礎設施和 CI/CD 流程應用程式正在快速部署到生産中。但確定網絡的可靠性和安全性仍然是最大的挑戰之一。是以,越來越多的公司正在評估和采用服務網格軟體。

最新的 DZone Refcard

服務網格的頂級開源軟體

以下是 CNCF 領域中列出的一些開源服務網格軟體的清單:

  1. Istio
  2. Linkered
  3. Consul
  4. Open service mesh
  5. Network service mesh

但是最流行的兩個服務網格軟體是 Istio 和 Linkerd。我們将對其進行評估,并幫助您選擇在 2023 年對您更有意義的方案。

Istio 和 Linkerd 的快速介紹

Istio

Istio是一個開源服務網格平台,可簡化和保護微服務之間的流量。Istio 為流量管理、安全性和可觀察性提供專用基礎設施,以幫助開發人員大規模處理 Kubernetes 和多個雲中的微服務網絡。

Linkerd

Linkerd 是一種輕量級開源服務網格軟體,用于保護 Kubernetes 應用程式。Buoyant 開發了它。Linkerd 為 Kubernetes 中運作的所有微服務提供安全、流量管理和可見性功能。

Istio 和 Linkerd 如何工作?

Istio 和 Linkerd 提供控制和資料平面來實作服務網格。Istio 提供Envoy 代理作為資料平面的邊車,而 Linkerd 使用 Linkerd-2 代理。截至 2023 年,Envoy Proxy 已被 1000 多家公司廣泛使用,并由 300 多家公司貢獻。

來到控制平面,服務網格軟體都有構成控制平面的各種元件。Istio 控制平面(參見圖 A)具有 Istiod、Pilot、Galley 和 Citadel 等子元件,而 Linkerd 具有目标服務、身份服務和代理注入器(參見圖 B)。每個服務網格的元件都執行類似的活動——将網絡政策級聯到代理,通過頒發 TLS 證書來管理安全性,以及将具有特定配置的代理注入命名空間中的每個服務。

Istio vs. Linkerd:2023 年最佳服務網格

圖 A:Istio 架構

Istio vs. Linkerd:2023 年最佳服務網格

圖 B:Linkerd 架構

Istio 與 Linkerd:功能方面的比較

解決方案架構師、雲工程師和平台工程師等工程團隊通常會研究以找到适合其現代基礎設施網絡管理的服務網格軟體。我們已經考慮了比較 Istio 和 Linkerd 的最高标準,這将幫助軟體工程團隊選擇最好的服務網格軟體。用于比較的前 6 大标準是流量管理、安全管理、可觀察性、支援技術、性能和可擴充性以及社群貢獻。

請閱讀 Istio 和 Linkerd 之間的進階功能比較。

表格比較:Istio 與 Linkerd

Istio vs. Linkerd:2023 年最佳服務網格

流量管理:Istio 更好地管理網絡

Service Mesh 都提供了流量路由、拆分、重試、斷路器等基本的負載均衡功能,但 Istio 在流量管理能力上領先,原因如下:

  1. Istio 支援 VM,而 Linkerd 不支援。如果您計劃為具有 Kubernetes 和 VM 工作負載的混合雲實施服務網格,那麼 Istio 會更有意義。
  2. Istio 确實支援 HTTP/3 協定,也提供延遲注入等進階能力,而 Linkerd 則不支援。Istio 将在開發尖端的彈性雲應用程式時派上用場。
  3. 關于前端/邊緣代理的支援,Istio 和 Linkerd 都支援第三方入口,如 NGINX、HA Proxy、Ambassador 等。但是 Istio 提供了自己的 Istio 入口網關,并允許配置 Envoy 代理作為網關(閱讀 Envoy Gateway ) 這樣開發人員和平台團隊就不必再維護另一個軟體了。
  4. Linkerd 中的出口規則可能很複雜(通過 DNS 和委托表 [DTAB] 實作)。在 Istio 中,您可以使用相同的入口對象(網關和虛拟服務)來配置出口流量。

安全管理:Istio 通過更多內建實作高度安全

Istio 和 Linkerd 以其在 L4 和 L7 層的安全實作而聞名。它們通過 mTLS 和基于 JWT 的身份驗證提供更強大的身份,使您能夠控制哪些流量可以到達服務網格中的 Pod。

但是從企業實作的角度來說,在與外部安全提供商的內建方面,Istio 做得很好。Istio 為幾乎所有使用 OIDC 連接配接器的身份驗證和授權提供程式提供更多內建。

例如,Istio 提供與 Google SSO、OAuth 2.0、SAML 和 Okta 的連接配接以實作更強大的身份驗證,并支援所有外部證書頒發機構 (CA) 管理器,如 AWS CA、Let's Encrypt 等。

可觀察性:Istio 和 Linkerd 相提并論

對網絡健康狀況和應用程式性能的可見性和可觀察性對于主動采取行動至關重要。服務網格都提供名額、日志和跟蹤,以了解網絡和應用程式的性能和行為。Istio 和 Linkerd 為 HTTP 和 gRPC 流量生成延遲、錯誤、飽和度等名額。(Istio 可以為 HTTP/3 提供流量,是以這裡有能力)。但是,這兩種工具都不提供用于可視化的 UI;發出的資料可以從 CLI 中看到。是以,平台團隊可以使用 Grafana 儀表闆或開箱即用的供應商解決方案來通路資訊。

Buoyant 為 Linkerd 提供了一個基于 Web 的儀表闆,而 IMESH 為 Istio 提供了一個直覺的 UI。

可擴充性:Linkerd 領先,但 Istio 也不甘落後

服務網格的性能在很大程度上取決于資料平面的版本。資料平面性能取決于連接配接數、目标請求、請求大小、可用 CPU 核心、代理過濾器數量等多種因素。由于 Linkerd 是為處理輕量級用例而建構的,僅處理 Kubernetes 負載,是以它消耗更少資源。

直到 2021 年初,重量級 Istio 以其資源密集型資料平面而聞名,這主要是由于使用了多個過濾器。然而,根據2021 年初對 Istio 1.6.8 的性能評估,與之前的版本相比,資料平面有了很好的改進。負載測試是在注入 1,000 個服務的 2,000 個特使代理上進行的,每秒允許 70,000 個請求。

有興趣的可以檢視Istio 負載測試的詳細内容。

下面總結 Istio 性能和可擴充性測試的幾點:

  1. Envoy 代理每秒通過代理的每 1000 個請求使用 0.5 個 vCPU 和 50 MB 記憶體。這
  2. 由于 Envoy 代理不會緩沖傳輸中的資料,是以請求和響應速率不會影響記憶體消耗。
  3. 對于 HTTP/1.1 協定和啟用的 mTLS,以及每秒 1000 個請求的 1kb 負載,Envoy 代理将 3.12 毫秒添加到第 90 個百分位數的延遲。

2022 年 9 月,Istio 推出了Ambient Mesh,這是一個更快、更強大的版本,依次實作 L4 安全和 L7 網絡管理。Istio Ambient mesh 的資料平面基于 Rust 建構,具有新的架構;是以,它應該很快。該項目處于測試階段,将于 2023 年底正式釋出,供生産使用。

社群支援:Istio 的貢獻是 Linkerd 的 5 倍

Istio 和 Envoy 代理是兩個由 500 多個組織貢獻的開源項目。來自 Google、Microsoft、IBM、Lyft、Salesforce、SAP 等大型組織的開發人員為 Istio 和 Envoy Proxy 做出了巨大貢獻。

另一方面,Linkerd 的貢獻者有限,對該項目的貢獻要少得多。超過 80% 的貢獻是由 Buoyant(Linkerd 的創始人)做出的。

服務網格軟體Git 貢獻傑出貢獻者參考連結對那個~500,000谷歌、IBM、紅帽、Salesforce、VMware、英特爾、SAP、NetApp、微軟、惠普點選這裡左邊120,000浮力 點選這裡

結論

随着雲和 Kubernetes 上微服務的複雜性增加,雲架構師和平台團隊将采用服務網格來簡化網絡和安全性。僅在 Kubernetes 上托管的工作負載較少的小型組織可以使用輕量級 Linkerd 服務網格。但是,如果具有許多微服務的應用程式分布在公共雲中并服務于高 Web 流量,那麼具有進階功能的 Istio 會更有意義。