雲端擴展:Istio Ambient 與 Cilium 的比較

深入探討大規模效能。

2024 年 10 月 21 日 | 作者:Mitch Connors

來自潛在 Istio 用戶的一個常見問題是「Istio 與 Cilium 相比如何?」雖然 Cilium 最初僅提供 L3/L4 功能,包括網路原則,但最近的版本已使用 Envoy 添加了服務網格功能,以及 WireGuard 加密。與 Istio 一樣,Cilium 也是一個 CNCF 畢業專案,並且在社群中已經存在多年。

儘管表面上提供了類似的功能集,但這兩個專案的架構卻截然不同,最值得注意的是 Cilium 使用 eBPF 和 WireGuard 在核心中處理和加密 L4 流量,而 Istio 的 ztunnel 組件則在用戶空間中處理 L4。這些差異導致人們對 Istio 與 Cilium 相比在大規模情況下的效能產生了相當多的猜測。

雖然已經對這兩個專案的租戶模型、安全協定和基本效能進行了許多比較,但尚未發布針對企業規模的完整評估。我們沒有強調理論上的效能,而是對 Istio 的 Ambient 模式和 Cilium 進行了徹底的測試,重點關注延遲、吞吐量和資源消耗等關鍵指標。我們使用實際的負載情境來加強壓力,模擬繁忙的 Kubernetes 環境。最後,我們將 AKS 叢集的大小增加到 1,000 個節點和 11,000 個核心,以了解這些專案在大規模情況下的效能表現。我們的結果顯示了每個專案可以改進的方面,但也表明 Istio 是明顯的贏家。

測試情境

為了將 Istio 和 Cilium 推向極限,我們建立了 500 種不同的服務,每種服務由 100 個 Pod 支援。每種服務都在一個單獨的命名空間中,其中還包含一個 Fortio 負載產生器客戶端。我們將客戶端限制在 100 個 32 核心機器的節點池中,以消除來自共置客戶端的雜訊,並將剩餘的 900 個 8 核心實例分配給我們的服務。

Scaling to 500 services with 50,000 pods.

對於 Istio 測試,我們使用了 Istio 的 Ambient 模式,每個服務命名空間都有一個 航點代理 和預設的安裝參數。為了使我們的測試情境類似,我們必須在 Cilium 中開啟一些非預設功能,包括 WireGuard 加密、L7 代理和節點初始化。我們還在每個命名空間中建立了一個 Cilium 網路原則,其中包含基於 HTTP 路徑的規則。在這兩種情境中,我們都透過每秒隨機將一項服務擴展到 85 到 115 個實例,以及每分鐘重新標記一個命名空間來產生變動。若要查看我們使用的精確設定並重現我們的結果,請參閱我的筆記

可擴展性評分卡

Scalability Scorecard: Istio vs. Cilium!
Istio 能夠以 20% 更低的尾端延遲提供多 56% 的查詢。Cilium 的 CPU 使用率降低了 30%,但我們的測量不包括 Cilium 用於處理加密的核心,這是在核心中完成的。

考慮到使用的資源,Istio 每個核心處理了 2178 個查詢,而 Cilium 則為 1815 個,提高了 20%。

幕後花絮:為什麼會有差異?

了解這些效能差異的關鍵在於每個工具的架構和設計。

深入探討

雖然此專案的目的是比較 Istio 和 Cilium 的可擴展性,但一些限制使得直接比較變得困難。

第 4 層不總是第 4 層

雖然 Istio 和 Cilium 都提供 L4 原則強制執行,但它們的 API 和實作卻有很大的差異。Cilium 實作 Kubernetes NetworkPolicy,它使用標籤和命名空間來阻止或允許存取進出 IP 位址。Istio 提供 AuthorizationPolicy API,並根據用於簽署每個請求的 TLS 身分做出允許和拒絕的決定。大多數深度防禦策略需要同時使用 NetworkPolicy 和基於 TLS 的原則來實現全面的安全性。

並非所有加密都相同

雖然 Cilium 提供 IPsec 作為符合 FIPS 的加密,但大多數其他 Cilium 功能(例如 L7 原則和負載平衡)與 IPsec 不相容。當使用 WireGuard 加密時,Cilium 具有更好的功能相容性,但 WireGuard 不能在符合 FIPS 的環境中使用。另一方面,由於 Istio 嚴格遵守 TLS 協定標準,因此預設情況下始終使用符合 FIPS 的 mTLS。

隱藏成本

雖然 Istio 完全在使用者空間中運作,但 Cilium 的 L4 資料平面使用 eBPF 在 Linux 核心中執行。資源消耗的 Prometheus 指標僅測量使用者空間資源,這意味著此測試中未考慮 Cilium 使用的所有核心資源。

建議:選擇合適的工具

那麼,結論是什麼呢?嗯,這取決於您的特定需求和優先順序。對於純 L3/L4 用例且不需要加密的小型叢集,Cilium 提供經濟高效且效能良好的解決方案。然而,對於較大的叢集以及對穩定性、可擴展性和進階功能的關注,Istio 的 Ambient 模式以及替代的 NetworkPolicy 實作是最佳選擇。許多客戶選擇將 Cilium 的 L3/L4 功能與 Istio 的 L4/L7 和加密功能結合使用,以實現深度防禦策略。

請記住,雲原生網路的世界正在不斷發展。請密切關注 Istio 和 Cilium 的發展,因為它們會繼續改進並解決這些挑戰。

讓我們繼續對話

您是否使用過 Istio 的 Ambient 模式或 Cilium?您的經驗和見解是什麼?請在下面的評論中分享您的想法。讓我們互相學習,並一起駕馭令人興奮的 Kubernetes 世界!

分享此文章