Service Mesh服務網格之Linkerd架構


今天詳細介紹一下Linkerd的架構。

控制平面

Linkerd控制平面是一組在專用Kubernetes命名空間中運行的服務(在Linked默認情況下)。這些服務完成各種事情——聚合遙測數據、提供面向用戶的API、向數據平面代理提供控制數據等。它們共同驅動着數據平面的行為。

 

控制平面由四個部分組成:

  • 控制器——控制器部署由多個容器(public-api,proxy-api,destination,tap)組成,這些容器提供了控制平面的大部分功能。

  • Web——Web部署提供Linkerd Dashboard。

  • Prometheus—— Linkerd公開的所有指標都通過Prometheus進行刪除並存儲。這是Prometheus的一個實例,它已被配置為專門用於處理Linkerd生成的數據。 

  • Grafana—— Linkerd配備了許多開箱即用的Dashboard。Grafana組件用於呈現和顯示這些Dashboard。你可以通過LinkerdDashboard中的鏈接訪問這些Dashboard。

架構

 

數據平面

Linkerd數據平面由輕量級代理組成,它們作為sidecar容器與服務代碼的每個實例一起部署。為了將服務“添加”到Linkerd服務網格,你必須重新部署該服務的pod來讓每個pod中都包含數據平面代理。(linkerd inject 命令完成此操作,以及完成通過代理透明地從每個實例傳遞流量所需的配置工作)你可以使用單個CLI命令將服務添加到數據平面。

 

這些代理透明地攔截與每個pod之間的通信,並添加諸如檢測和加密(TLS)之類的功能,以及根據相關策略允許和拒絕請求。

 

這些代理不是手動配置的。相反,它們的行為是由控制平面驅動的。

 

代理

用Rust編寫的超輕透明代理,它安裝在服務的每個pod中,並成為數據平面的一部分。它接收pod的所有傳入流量,並通過配置initcontainer的iptables,攔截傳出流量和正確轉發流量。因為它是一個sidecar並攔截服務的所有傳入和傳出流量,所以不需要更改代碼,甚至可以將其添加到正在運行的服務中。

 

代理的功能包括:

  • HTTP,HTTP / 2和任意TCP協議的透明、零配置代理

  • 用於HTTP和TCP流量的自動Prometheus度量導出

  • 透明、零配置得WebSocket代理

  • 自動、延遲感知、第7層負載均衡

  • 針對非HTTP流量的自動第4層負載均衡

  • 自動TLS(實驗)

  • 按需診斷分類API

  • 代理支持通過DNS和目標gRPC API進行服務發現 。

 

CLI

Linkerd CLI在你的機器上本地運行,並用來和控制和數據平面交互。它可用於查看統計信息,實時調試生產問題以及安裝/升級控制和數據平面。

 

Dashboard

Linkerd Dashboard提供了一個高級視圖,能夠實時顯示你的服務發生情況。它可用於查看“黃金”指標(如成功率、請求/秒和延遲)、可視化服務依賴性,並了解特定服務路由的運行狀況。

Top Line指標

Grafana

作為控制平面的一個組件,Grafana為你的服務提供開箱即用的可操作Dashboard。你可以查看高級指標並深入了解細節,即使對於pod也是如此。

 

開箱即用的Dashboard包括:

Top Line指標

部署細節

Pod細節

Linkerd 健康診斷

Prometheus

Prometheus是一種雲原生監控解決方案,用於收集和存儲所有Linkerd指標。它是作為控制平面的一部分安裝的,並提供CLI、Dashboard和Grafana使用的數據。

代理在4191端口上公開一個/metrics端點,讓Prometheus獲取數據,並且每隔10秒就會獲取一次

指標集合

 

更多技術文章,掃描下方二維碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM