天天看點

一張圖了解Envoy

Envoy 是 Istio 資料面的核心元件,已Sidecar的模式同應用部署在一個Pod中。

下圖展示了Envoy配置流程:

一張圖了解Envoy

  • Pilot-agent負責Envoy生命周期管理。它根據啟動參數和K8S API Server中的配置資訊生成Envoy的初始配置檔案envoy-rev0.json,該檔案告訴Envoy從xDS server中擷取動态配置資訊,并配置了xDS server的位址資訊,即控制面的Pilot。
  • Pilot-agent使用envoy-rev0.json啟動Envoy程序。
  • Envoy根據初始配置獲得Pilot位址,采用xDS接口從Pilot擷取到Listener,Cluster,Route等動态配置資訊。
  • Envoy根據擷取到的動态配置啟動Listener,并根據Listener的配置,結合Route和Cluster對攔截到的流量進行處理。

Envoy通過xDS API進行動态配置。xDS是一類發現服務的總稱,包含LDS、RDS、CDS、EDS及SDS。

  • LDS:Listener發現服務。Listener監聽器控制Envoy啟動端口監聽(目前隻支援TCP),并配置 L3或L4層過濾器,在網絡連接配接到達後,由網絡過濾器堆棧開始處理。
  • RDS:Route發現服務,用于Envoy HTTP連接配接管理器動态擷取路由配置。路由配置包含HTTP頭修改(增加、删除HTTP頭鍵值)、Virtual Hosts(虛拟主機)及Virtual Hosts定義的各個路由條目。
  • CDS:Cluster發現服務,用于動态擷取Cluster資訊。Envoy Cluster管理器管理着所有的上遊Cluster。Envoy從Listener(針對TCP協定)或Route(針對HTTP)中抽象出上遊Cluster,作為流量轉發目标。
  • EDS:Endpoint發現服務。對于每個Cluster,Envoy通過EDS API動态擷取Endpoint。
  • SDS:Secret發現服務,用于在運作時動态擷取TLS證書。

繼續閱讀