服務網格大比拼:Istio、Linkerd、Linkerd2和Consul
本文比較適合Kubernetes的每個服務網格,並確定獲勝者。
Linkerd
我在DC / OS上廣泛使用了Linkerd並且非常喜歡它。然而,時代已經發生變化,並且有一些基本問題導致這對Kubernetes來說完全是死路一條。
Linkerd是用JVM語言編寫的,這意味著每個節點代理程式的佔用空間為110mb +記憶體。當你每個主機只執行一個節點代理時,這不是太糟糕,但是世界正在轉向每個pod代理邊車,我想每個人都意識到這屬於太多的開銷。
Linkerd也不代理TCP請求,也不支援websockets。
應付大規模訪問時,Linkerd擁有絕對驚人的流量控制它也是支援連線叢集外部的兩個服務網格之一。
Linkerd2
Linkerd2使用Golang和Rust完全重寫了Linkerd,專門用於Kubernetes。不幸的是,與每次重寫一樣,你從功能和穩定性的角度看需要再次從頭開始,會繼續領教到一些經驗教訓。
遷移到Rust的資料平板代理側面應該有助於緩解一些錯誤,還解決記憶體問題。它現在還支援所有主要協議,這是向前邁出的一大步。
與其他服務網格設計相比,一個有趣的區別是資料平版和控制平版服務之間的緊密預設耦合。
從功能角度來看還無法和Istio競爭。比如服務網格基本上需要的元件:分散式跟蹤。 這仍處於Linkerd2的規劃階段。
我很難猜測Linkerd2需要多長時間才能從穩定性和功能成熟度角度趕上Istio。這可能需要數年時間。
話雖如此,如果你嘗試使用Linkerd2並對功能集感到滿意,那麼這對未來來說似乎是一項很好的投資。許多人討厭Istio的高度複雜性,所以我認為隨著時間的推移,如果它仍然很簡單,這可能會成為最引人注目的選擇。
Consul
Consul的最新版本現在提供了“ connect ”功能,可以在現有群集上啟用。與大多數Hashicorp工具一樣,Consul是一個包含資料和控制平版的Go二進位制檔案。主要的獨特賣點似乎是你可以在Kubernetes上啟用跨服務的連線,並將它們加入到執行Consul的外部vm服務上。這可能對一些組織有吸引力。但是,根據我過去所做的工作,我並不認為這是一個很大的優勢。通常我們讓遺留系統自然死亡,然後處理新專案或將內容遷移到Kubernetes。
Consul確實具有輕微的架構優勢,因為它作為一個完整的網狀網路執行,沒有集中控制平版服務,理論上這是一種效能瓶頸。
layer4和layer7之間也有一個整齊的分離。我認為這種分離可能使Consul服務網格設計變得簡單,同時仍允許分割資料層。如果你需要更多第7層功能,你現在可以使用Envoy切換預設資料層代理。
但是,預設代理功能非常缺乏。要獲得跟蹤支援,或者許多更高階的第7層功能,你需要將代理換成像Envoy這樣的東西。這在網上沒有很好的記錄。
另一個值得關注的部分是控制平版配置。在這一層配置Istio是非常複雜的,我看到Consul有一個簡單的“服務訪問圖”功能。
Hashicorp在部落格上發表了關於區分安全領域的文章。Consul ACL提供主機安全性是一個非常好的功能。特別是如果你想以安全的方式從叢集外部的Kubernetes內部連線pod。代理快取,特別是對於auth,顯然使通訊效能優異。
就像Linkerd2一樣,這是值得關注的。Consul connect僅在幾周前釋出,因此網上的指南並不多。如果你已經對Hashicorp工具鏈進行了高度投資,那麼我將對此進行試用,並瞭解如何使用Envoy替換預設代理。
Istio
Istio穩定且功能豐富。在撰寫本文時,Istio擁有11.5k Github明星,244位貢獻者,並得到Lyft,Google和IBM的支援。Istio開創了許多其他服務網格模擬的想法。
其中一個突出的特點是自動側車注入,它與Helm圖表的效果非常好。
當然有些負面因素與模組化、外掛能力和最終的複雜性有關。你可以切換Istio元件並將其與其他系統整合。這一切都是以陡峭的學習曲線為代價的,並且有足夠的空間來踏坑。
但是,令人驚訝的是,如果你堅持使用預設值,你可以非常快速地啟動並執行Istio。在膝上型電腦上使用minikube,helm和Istio配置測試例項的工作時間不到5分鐘。線上還有數千篇關於如何配置其他整合的文章。這與其他服務網格形成鮮明對比。
獲勝者:Istio
Istio可能是目前最好的服務網格,但複雜性很高,與Kubernetes本身複雜性相比,卻並不是很高。它擁有最多的功能,並在幾個月前推出了第1版和生產版。它還得到了谷歌和大型社群的支援,推出了很酷的部落格和整合。
相關文章
- 服務網格Istio、Linkerd和Cilium效能比較
- 比較服務網格:Linkerd 2.x與Istio 1.x
- 服務網格service mesh 之 Linkerd
- 服務網格(Envoy+Istio)
- Istio 1.2服務網格釋出
- 服務網格大戰,再見 Istio! - Fossas
- 使用Istio服務網格實現流量映象
- 服務網格istio概念應知應會
- servicemesher/istio-handbook:服務網格Istio中文思維導圖
- 快速上手 Linkerd v2 Service Mesh(服務網格)
- 初識 Istio - 服務網格管理工具
- hystrix對比服務網格istio的destinationrule
- 服務網格GCP (GKE, Istio, MSA) 搖滾組合GC
- 服務網格大事:Istio釋出1.0版本
- 學習搭建 Consul 服務發現與服務網格-有豐富的示例和圖片
- k8s-服務網格實戰-入門IstioK8S
- 從零搭建一個基於Istio的服務網格
- Emoji.voto,Linkerd 服務網格(service mesh)的示例應用程式
- 經驗分享:修復服務網格Istio大量503錯誤
- 【連載】微服務網格Istio(一)微服務
- Istio最佳實踐:在K8s上透過Istio服務網格進行灰度釋出K8S
- 華為雲Istio服務網格,讓應用治理智慧化、視覺化視覺化
- SpringBoot、Kubernetes和Istio微服務網格演示原始碼Spring Boot微服務原始碼
- 精彩分享 | 歡樂遊戲 Istio 雲原生服務網格三年實踐思考遊戲
- 使用 Istio CNI 支援強安全 TKE Stack 叢集的服務網格流量捕獲
- Istio中的服務和流量的抽象模型抽象模型
- 服務網格 Service Mesh
- Istio旨在成為容器化微服務的網格管道微服務
- 使用Java和Consul實現服務配置管理Java
- Service Mesh框架對比:Linkerd vs. Istio框架
- 微服務是否真的需要服務網格?微服務
- 服務端 I/O 效能大比拼:Node、PHP、Java 和 Go服務端PHPJavaGo
- 為微服務構建服務網格的Istio自身卻走向微服務的反面單體架構 – Christian Posta微服務架構
- 使用服務網格提高安全性:Christian Posta帶你探索Istio的新功能
- 5分鐘安裝Kubernetes+帶你輕鬆安裝istio服務網格指南
- Linkerd Service Mesh 服務配置檔案規範
- 服務網格重蹈ESB的覆轍?為什麼需要SMI服務網格介面? - samnewman
- consul服務註冊與服務發現的巨坑