要構建 <span style="color:red;">Sidecarless</span>(無 Sidecar)高性能服務網格,核心思路是:把“每個 Pod 背一個代理小書包”的模式,升級為“每個節點設一個流量與安全崗亭”,並且把 <span style="color:red;">L4</span>(連通與零信任)與 <span style="color:red;">L7</span>(路由/鑑權/限流)能力分層按需啓用。這樣能顯著降低每 Pod 的 CPU/內存/冷啓動開銷,並把治理能力平台化。🙂
兩條主流落地路線(務實選型)
- <span style="color:red;">Istio Ambient</span>:底座是每節點 <span style="color:red;">ztunnel</span>(<span style="color:red;">DaemonSet</span>)負責 L4 安全與轉發,上層按需部署 <span style="color:red;">Waypoint</span> 負責 L7 能力;Ambient 明確採用“兩層數據平面”分拆思路。 (Istio)
- <span style="color:red;">Cilium Service Mesh</span>:用 <span style="color:red;">eBPF</span> 在內核側攔截與加速轉發,必要時把流量透明引到每節點的 <span style="color:red;">Envoy</span>(常見結合 <span style="color:red;">TPROXY</span>)做 L7 策略與路由。 (Cilium 文檔)
原理對比表(你要的“高性能抓手”在這裏)📊
| 維度 | 傳統 Sidecar | <span style="color:red;">Istio Ambient</span> | <span style="color:red;">Cilium eBPF Mesh</span> |
|---|---|---|---|
| 數據平面位置 | 每 Pod 1 個代理 | 每節點 <span style="color:red;">ztunnel</span> + 可選 <span style="color:red;">Waypoint</span> | 內核 <span style="color:red;">eBPF</span> + 每節點 Envoy(可選) |
| 性能/成本 | Pod 數越多成本越高 | L4 默認輕量,L7 按需 | L3/L4 更“貼內核”,L7 再上代理 |
| L7 能力 | 全量可用 | 只給需要的服務上 Waypoint | 只給需要的流量引到 Envoy |
| 升級與風險域 | 影響面分散、運維複雜 | 組件集中、變更更可控 | 組件集中,但更依賴內核/EBPF 能力 |
| 適合場景 | 小規模/強依賴 L7 全量治理 | 大規模、追求降本+漸進治理 | 追求極致轉發性能與可觀測閉環 |
建設路線圖(按這個做,少走彎路)🚀
方案 A:Istio Ambient(Sidecarless 的“分層治理”)
1)安裝 Ambient(示例)
istioctl install --set profile=ambient -y
解釋:
istioctl install:下發控制面與數據面組件。--set profile=ambient:啓用 <span style="color:red;">Ambient</span> 數據平面模式;其關鍵點是每節點 <span style="color:red;">ztunnel</span> 承擔 L4 安全覆蓋,L7 由可選 <span style="color:red;">Waypoint</span> 承擔。 (Istio)-y:自動確認,便於自動化流水線執行。
2)讓業務“加入 Ambient”(按命名空間漸進)
kubectl label namespace prod istio.io/dataplane-mode=ambient --overwrite
解釋:
label namespace:把接入做成“配置動作”,避免改 Pod 模板。istio.io/dataplane-mode=ambient:表示該命名空間走 <span style="color:red;">Sidecarless</span> 數據面(節點級 ztunnel 接管東西向流量)。(Istio)--overwrite:冪等覆蓋,適合反覆執行的 GitOps。
3)只在需要 L7 的地方部署 Waypoint(把成本花在刀刃上)
Waypoint 通常與 <span style="color:red;">Gateway API</span> 生態配合,用於 L7 路由/策略等能力“按需開通”。(Istio)
方案 B:Cilium eBPF Mesh(追求轉發效率的“內核加速派”)
1)安裝 Cilium 並開啓服務網格能力(示例)
helm install cilium cilium/cilium -n kube-system \
--set envoy.enabled=true \
--set hubble.enabled=true
解釋:
helm install:以聲明式方式部署 Cilium。envoy.enabled=true:開啓每節點 <span style="color:red;">Envoy</span>(通常是 DaemonSet 形態)用於 L7 策略/路由能力;Cilium 文檔明確 Envoy 作為主機側代理組件部署。(Cilium 文檔)hubble.enabled=true:打開觀測面,便於把“性能優化”做成可驗證閉環,而不是拍腦袋。
2)為何性能更好(關鍵機制一句話講透)
Cilium 利用 <span style="color:red;">eBPF</span> 在內核側攔截與轉發,必要時通過 <span style="color:red;">TPROXY</span> 把流量透明導向每節點 Envoy 做 L7 處理,從而避免“每 Pod 一跳代理”的常態開銷。(Medium)
落地建議(高性能網格的“經營原則”)
- 默認只做 <span style="color:red;">L4 + mTLS</span> 覆蓋,把 <span style="color:red;">L7</span> 當成“可選增值服務”:只給支付、登錄、核心 API 等關鍵鏈路啓用。 (Istio)
- 用“命名空間/服務標籤”做接入開關,避免一次性全量上網格造成性能與排障壓力。
- 每次啓用/升級都配一套壓測迴歸指標:<span style="color:red;">p95/p99</span>、CPU/內存、連接數、重傳率;否則你只是在“感覺性能更好”。
如果你告訴我:你的集羣規模(節點數/Pod 數)、主要協議(HTTP/gRPC/自定義 TCP)、是否需要強 L7(鑑權/灰度/限流),我可以把上面路線收斂成一份“可直接執行的建設清單 + 分階段驗收指標”。