天天看點

xDS協定

xDS

​xDS​

​是資料平面标準

利用​

​XDS​

​​協定,​

​Envoy​

​​可以實作配置的完全動态化,配置實時更新而無需重新開機​

​Envoy​

​​或者影響業務,此外,利用其L3/L4/L7 Filter機制,​

​Envoy​

​​可以完全無侵入的擴充各種強大的功能。利用其内置的​

​Tracing​

​​機制和​

​Stats​

​​子產品,可以很友善的實作對流量的跟蹤以及監控,保證Envoy中流量的可觀察性。 由​

​Envoy​

​​項目發展而來,​

​Envoy​

​​ 可以通過​

​xDS API​

​​ 可以動态擷取​

​Listener​

​​(監聽器),​

​Route​

​​(路由),​

​Cluster​

​​(叢集/服務),​

​Endpoint​

​​(叢集成員/服務執行個體)以及​

​Secret​

​(秘鑰)配置。

​xDS​

​​協定是基于​

​gRPC​

​​實作的傳輸協定,即​

​Envoy​

​​通過​

​gRPC streaming​

​​訂閱​

​Pilot​

​​的資源配置。 ​

​Pilot​

​​借助​

​ADS​

​​對API更新推送排序的能力,按照​

​CDS​

​​-​

​EDS​

​​-​

​LDS​

​​-​

​RDS​

​ 的順序串行分發配置。

​xDS​

​ 是一組發現服務的總稱,包含:

  1. LDS

    Listener 發現服務。

    Listener監聽器控制Envoy啟動端口監聽(目前隻支援TCP協定),并配置L3/L4層過濾器,當網絡連接配接達到後,配置好的網絡過濾器堆棧開始處理後續事件。

    這種通用的監聽器體系結構用于執行大多數不同的代理任務(限流,用戶端認證, HTTP連接配接管理, TCP代理等)。

  2. RDS

    Route發現服務,用于HTTP連接配接管理過濾器動态擷取路由配置。

    路由配置包含HTTP頭部修改(增加、删除HTTP頭部鍵值),virtual hosts (虛拟主機),以及virtual hosts 定義的各個路由條目。

  3. CDS

    Cluster發現服務,用于動态擷取Cluster資訊。

    Envoy cluster管理器管理着所有的上遊cluster。

    鑒于上遊cluster或者主機可用于任何代理轉發任務,是以上遊cluster一般從Listener或Route中抽象出來。

  4. EDS

    Endpoint發現服務。

    在Envoy術語中, Cluster成員就叫 Endpoint,對于每個Cluster, Envoy通過EDS API動态擷取Endpoint。

    EDS作為首選的服務發現的原因有兩點:

    與通過DNS解析的負載均衡器進行路由相比, Envoy能明确的知道每個上遊主機的資訊,因而可以做出更加智能的負載均衡決策。 Endpoint配置包含負載均衡權重、可用域等附加主機屬性,這些屬性可用域服務網格負載均衡,統計收集等過程中。

  5. SDS

    Secret發現服務,用于運作時動态擷取TLS證書。

    若沒有SDS特性,在k8s環境中,必須建立包含證書的Secret,代理啟動前Secret必須挂載到sidecar容器中,如果證書過期,則需要重新部署。

    使用SDS,集中式的SDS 伺服器将證書分發給所有的Envoy執行個體,如果證書過期,伺服器會将新的證書分發, Envoy 接收到新的證書後重新加載兒不用重新部署

根據配置更新下發次元分類:

  1. State of the World(Basic xDS):全量傳輸 獨立gRPC stream
  2. Incremental xDS:增量傳輸 獨立gRPC stream
  3. Aggregated Discovery Service(ADS):全量傳輸 聚合gRPC stream
  4. Incremental ADS:增量傳輸 聚合gRPC stream (暫未實作)

ADS

早期的xDS協定是 全量傳輸 單連結 獨立資源, 現在主流的還是全量傳輸 聚合gRPC Stream (ADS)。

由于Envoy xDS采用最終一緻性,部分流量可能在更新時被丢棄。 ADS通過一個連接配接(gRPC同一stream)申請多種資源/接受多種資源。 能夠保證請求一定落在同一Pilot上,解決多個管理伺服器配置不一緻的問題。 通過順序的配置分發,輕松解決資源更新順序的問題。 按照這個方式CDS-EDS-LDS-RDS下發,由Polit控制,規避流量丢失的問題。

Incremental xDS

當配置發生變化時,僅下發和更新發生變化的配置部分,增量 xDS 用戶端需要向伺服器告知它已擁有的資源進而避免重複發送。

UDPA

​UDPA​

​是“Universal Data Plane API”的縮寫, “通用資料平面API”。

繼續閱讀