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。

Service Mesh服務網格之Linkerd架構|前沿

架構

數據平面

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

Service Mesh服務網格之Linkerd架構|前沿

Top Line指標

Grafana

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

開箱即用的Dashboard包括:

Service Mesh服務網格之Linkerd架構|前沿

Top Line指標

Service Mesh服務網格之Linkerd架構|前沿

部署細節
Service Mesh服務網格之Linkerd架構|前沿

Pod細節

Service Mesh服務網格之Linkerd架構|前沿

Linkerd 健康診斷

Prometheus

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

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

Service Mesh服務網格之Linkerd架構|前沿

指標集合

更多技術文章,掃描下方二維碼
Service Mesh服務網格之Linkerd架構|前沿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章