作者:施澤環、尹航。
2022 年 9 月,Istio 社群發布了乙個名為 Ambient 的新架構,由於其架構從邊車轉向第 4 層和第 7 層,因此也稱為 Sidecarless 模式。 阿里雲服務網格(ASM)是業界首個支援微溫模式的託管服務網格。
本文基於2024年雲棲大會阿里雲服務網格ASM產品技術最新進展分享記錄,阿里云云原生產品線服務網格團隊的施澤環、尹航將用4個部分本文介紹了 ASM 如何實現這種整合了 sidecarless 和 sidecar 模式的新形式的服務網格,以及 serverless 服務網格。
隨著服務網格在雲原生技術體系下越來越普及,越來越多的企業技術團隊在生產環境中使用服務網格,相信很多朋友已經了解了服務網格,為了方便剛開始接觸服務網格的同學們更順利地了解後續內容, 我們先來介紹一下服務網格的經典 sidecar 模式。
經典的服務網格架構根據元件的職責分為控制面和資料面,控制面扮演著服務網格的大管家的角色,根據資料面元件的需求為其提供不同的配置,資料面充當執行者, 它可以根據控制面下發的配置來操縱流量,是服務網格能力的真正執行者。
為了實現流量路由、負載均衡、故障注入、請求響應操作或認證、零信任網路等服務網格能力,服務網格的注入器會將乙個專用於執行服務網格能力的容器注入到應用 Pod 中,該容器與應用在同乙個 Pod 中,共享網路命名空間, 這是服務網格的 sidecar。
由於 sidecar 與應用容器共享網路命名空間,因此可以通過 iptables 規則輕鬆攔截應用流量到容器內的網格程序,這是經典的 sidecar 架構。
ASM 將控制平面與資料平面分離並管理部署,這比 Istio 具有一些顯著的優勢。 首先,ASM擁有完整的生命週期管理能力借助 ASM 的生命週期管理能力,使用者可以一鍵建立、刪除和公升級服務網格例項,而無需考慮配置問題或相容性問題。
其次,ASM 提供了掩蓋錯誤配置和診斷的能力ASM將這些問題轉化為巡檢項和診斷項,第一時間攔截並告警錯誤配置,幫助業務網格運維人員及時發現問題並解決問題。 ASM作為雲原生應用的網路基礎設施,提供一鍵快速連線多種雲服務的能力,幫助使用者快速接入雲原生生態。
最後,ASM 提供企業級多集群支援ASM 允許使用者快速劃分多平面集群的網格。
ASM 目前有 Serverless 部分控制平面元件,Serverless 元件可以自動擴容按需使用。 基於Serverless基礎的能力,可以實現更高的排程效率和啟動速度優化,通過映象快取顯著減少就緒時間和啟動時間。
sidecar 模式非常直觀和有效,但它仍然有一些缺點:
1)注入 sidecar 對工作負載有侵入性,注入或取消注入需要重啟工作負載,調整 sidecar 的配置(如資源)也可能需要重啟工作負載,sidecar 和工作負載繫結較強。
2)資源利用率不理想,為了應對最壞的情況,每個sidecar都需要預留一部分資源,集群規模越大,閒置資源越多。
3)流量捕獲、協議識別等第 7 層處理計算成本較高,但並非所有請求都是 HTTP 協議或需要由 sidecar 處理。
基於以上原因,我們需要一種侵入性更小、使用成本更低的方法使服務網格適用於更多場景。 所以,在 2022 年 9 月,Istio 社群引入了無邊車的環境模式該模式將 sidecar 的功能拆分為第 4 層和第 7 層**,第 4** 層和第 7** 層的部署都與工作負載分離,彌補了 sidecar 模式在某些場景下的不足。 ASM 是業界首個支援微光模式的託管服務網格。
在環境模式下,第 4 層側重於傳輸層的可觀測性、路由和通訊加密,而第 7 層則基於第 7 層協議,在流量管理、安全性和可觀測性等維度進行更複雜的行為處理。 使用者可以根據實際業務需求,逐步選擇是否啟用應用以及啟用哪一層。
我們把資料平面的 L4 稱為 ztunnel,它是乙個 L4 處理層,L4 處理層將負責應用的所有 Layer 4 通訊。 ztunnel 以 daemonset 模式部署後,使用 CNI 在節點上配置流量攔截規則,攔截網格中 Pod 的流量到 ztunnel 例項,ztunnel 會將 MTLS 加密後的流量傳輸出去,對端 ztunnel 會解密流量後再傳送給應用。 借助上述路徑,ztunnel 還可以收集 TCP 監控指標、訪問日誌等。
我們將第 7 層稱為 Waypoint,它基於 Envoy,就像經典架構中的 sidecar 一樣,用於在 Ambient Mesh 模式下提供更高階的、基於 Layer 7 協議的功能。 例如,它可以基於請求標頭和憑據應用服務網格的高階策略,例如熔斷、流量整形、流量拆分、重試、故障注入、基於角色的訪問控制授權策略等。 相較於基於節點級部署的ztunnel,WayPoint部署在服務級別,使用者可以為某項服務開啟或關閉Layer 7,也可以隨意擴充套件部署規模,按需部署,提高集群資源利用率。
現在我們了解了 L4 和 L7 的具體功能,讓我們看一下 L4 和 L7 解耦的環境模式下的網路拓撲
讓我們看一下流量路徑在環境模式下的樣子,從 L4 開始:
1.當處於微光模式的應用程式 pod 啟動時,CNI 外掛程式會將其 IP 位址寫入節點網路命名空間中的 ipset。
2.當請求發起時,流量資料包通過 Pod 的 Veth Pair 介面到達節點網路命名空間,來自 ipset 中位址的資料包被節點上的 iptables 規則捕獲和處理。
3.iptables 規則將資料包標記為 0x100。
4.節點上基於策略的路由規則指定任何標記為 0x100 的資料包都將通過 istio 出站網路介面定向到目標 192168.127.2。
5.ztunnel pod 中的透明 iptables 規則將資料包從 pistioout 傳送到 ztunnel 出站埠 15001。
6.ztunnel 處理資料包並將其傳送到目標服務 (httpbin) 的 IP 位址。 當位址位於節點 B 上時,HTTPBIN 是 Veth 裝置位址,因此資料包被路由到節點 B。
7.資料包到達節點 B 後,入站流量的規則將確保資料包路由到 Istioin 介面。
8.資料包通過由 Istioin 和 Pistioin 組成的隧道,將資料包帶入 ztunnel pod。
9.ztunnel pod 中的 iptables 規則捕獲來自 pistioin 的資料包,並根據標籤將其定向到埠 15008。
10.ztunnel pod 處理資料包並將其傳送到目標 pod。
當使用第 4 層出站資料時,如果目標應用開啟了第 7 層,則第 4 層會將流量通過 HBeBone 隧道傳遞到目標應用的第 7 層,流量將通過偵聽埠 15008 的 Connect Terminate Listener 進入第 7 層,該路由由特定的過濾器處理, 解包HBeBone流量並完成認證,然後將流量傳送到主內部***進行後續處理。在主監聽器上,根據業務ip+埠進行流量匹配,執行七層流量策略確定目標集群。 最後,流量進入名為 Connect Originate 的內部偵聽器,該偵聽器繼續使用 HBone 隧道將流量傳送到上游目的地。
對環境網格流量路徑感興趣的讀者也可以參考作者的另一篇文章,其中對環境模式下的流量路徑進行了更深入的分析。
在新的架構中,sidecar 模式與 sidecarless 模式不衝突,使用者可以將兩種模式混合使用進行混合部署,借助此功能,可以根據需要逐步完成切換。 在某些情況下,ASM 的託管環境模式可以減少高達 60% 的資源開銷,減少 50% 的運營工作量,並將請求延遲降低多達 40%。
ASM 通過統一的控制平面 API 為資料面提供配置管理平台,按需提供 sidecar 模式下的 sidecar、sidecar 模式下的 4 層,甚至融合形式的託管配置。
由於 Layer 7 承載了更豐富的服務網格能力,因此在生產實踐中,Layer 7 更有可能需要在業務應用擴充套件的同時進行擴充套件。 基於新架構下七層部署的靈活性,ASM提供了託管的七層,以無伺服器的形式部署,遮蔽了七層的運維複雜性,使使用者無需提前規劃七層的容量,也不需要承擔任何七層的運維工作。 並可根據業務需求隨時部署Layer 7,以及一鍵擴縮容。
我們來看一下 Managed Layer 7** 的技術架構,使用者可以通過 K8S 標準 Gateway API 宣告 Layer 7**,位於 ASM 託管端的 WayPoint Proxy Controller 會 Watch Gateway API,當 Gateway CR 建立和更改時,WayPoint Proxy Controller 會基於 Gateway API Waypoint Proxy 工作負載的 Spec 對進行生命週期管理。 使用者可以通過閘道器 API 指定將第 7** 層部署在 ASM 託管的 WayPoint 代理池中,或部署在使用者集群中的 ECI 無伺服器節點上。
立訊物流是一家專注於時尚行業,為企業提供專業物流和一鏈解決方案的服務商。 立訊物流在全國擁有70+全渠道實體雲倉庫和6個中央電商倉庫,總面積100萬+平方公尺,覆蓋300+城市、3000+商圈,為眾多知名時尚品牌及其品牌店提供全渠道配送服務。
目前,立訊物流已將核心生產系統100%切換為ASMASM幫助Luxion Logistics在電網實施過程中將實施週期縮短了至少50%託管式運維架構和豐富的產品化能力,也幫助立訊物流運維團隊在網路流量管理、安全配置管理等方面實現運維效率增加至少 40%。 立訊物流改用ASM後,運維人員通過ASM提供的各種API,完成了所有與流量規則、安全、可觀測性相關的配置。 ASM閘道器用於訪問自定義認證服務,增強Ingress安全性,借助ASM的外部服務註冊能力,打通網格內外服務之間的通訊,將ASM提供的產品化能力高效對接到統一的可觀測性平台,從而生成可觀測資料, 獲取集合、查詢和搜尋一整套可觀察的解決方案,如儀錶盤視覺化、網格拓撲實時洞察、網格服務健康評估等。
最後,我們來看一下阿里雲服務網格提供的企業級服務網格能力。 從服務網格能力層面看,包括:異構業務的統一治理、多集群、跨集群應用的網路管理、CI CD工具整合的應用灰度發布和部署、應用雲架構平滑演進、基於KSERVE的AI彈性服務管理等。 在整合性和相容性方面,ASM 支援 Web 使用者介面,以及完整的 OpenAPI,提供了強大而靈活的整合能力,同時 ASM 完全相容 ISTIO 使用規範,支援通過標準的 K8S API 對服務網格例項的配置進行配置更改。
ASM控制面核心元件全託管,標準版和企業版採用統一的靈活架構,提供完整的多版本支援,並提供流量管理增強、協議增強、自適應XDS優化、軟硬體整合優化、網格診斷分析、擴充套件中心、異構服務註冊整合等多項強大的定製能力。 等。
ASM是雲原生應用的網路平台,為執行在異構計算基礎設施上的應用服務提供統一的網格治理能力。 基於ASM強大的異構計算基礎設施支撐能力,幫助使用者連線執行在K8S節點上的工作負載、執行在ECI節點上的Serverless工作負載、託管的Serverless元件,以及公有雲或IDC中的其他工作負載和異構設施,實現統一管理和運維。 有關ASM功能的更多資訊,請訪問ASM主頁或訪問ASM網站。
ASM 主頁:單擊下面的鏈結檢視 ASM 環境網格模式動手教程。