隨著容器化工作負載在分散式環境中擴展,對高效能、低延遲網路的需求變得至關重要。 eBPF 主機路由是 進階容器網路服務 (ACNS) 中一項以效能為中心的功能,它使用擴展的伯克利封包過濾器 (eBPF) 技術來優化 Kubernetes 叢集中的流量。 Kubernetes 主機上的舊版路由會在主機網路命名空間中以 iptables 和 netfilter 規則處理的形式引入額外負荷。 eBPF 主機路由比舊版主機路由具有以下優勢:
- 在 eBPF 程式中實作路由邏輯。
- 允許 Cilium eBPF 繞過主機命名空間中的 iptables。
這種直接路徑減少了躍點和處理層的數量,從而加快了資料包傳遞速度。
主要優點
減少延遲 - 略過主機中的 iptables 可降低 Pod 對 Pod 的延遲
增加輸送量 - 相較於舊版路由,節點之間的 Pod 對 Pod 流量有顯著改善
減少 CPU 使用率 - 由於移除了基於 iptables 的 SNAT 和路由邏輯,因此 CPU 使用率略有降低
eBPF 主機路由的使用案例是效能關鍵型工作負載,例如高輸送量微服務、即時服務或 AI/ML 工作負載。 啟用之前,請確定部署環境符合需求。
eBPF 主機路由的元件
iptables blocker - 一個初始化容器,可防止未來在主機網路命名空間中安裝任何 iptables 規則(啟用 eBPF 主機路由時,將略過此類規則)。
IP Masquerade Agent - 當 eBPF 主機路由處於作用中狀態時,Cilium 會使用基於 BPF 的偽裝接管 SNAT 責任。
ip-masq-agent 如果稍後停用 eBPF 主機路由,則會保持執行狀態以保持一致的行為;不過,當 eBPF 主機路由處於作用中狀態時,會忽略其 iptables 規則。
考慮事項
啟用 eBPF 主機路由會導致繞過主機網路命名空間中的 iptables 規則。 因此,AKS 會嘗試在主機網路命名空間中使用 iptables 規則的叢集上偵測並封鎖啟用 eBPF 主機路由。
在已啟用 eBPF 主機路由的叢集上,AKS 會封鎖在主機網路命名空間中安裝 iptables 規則的嘗試。 嘗試略過此區塊可能會導致叢集無法運作。
透過節點集區的輪流升級啟用 eBPF 主機路由更新節點,在節點流量清空逾時時尊重現有連線。 節點在特定節點啟用 eBPF 主機路由後即被標記
kubernetes.azure.com/ebpf-host-routing=true。eBPF 主機路由支援雙堆疊連接。
局限性
eBPF 主機路由目前與運行 Ubuntu 24.04 或 Azure Linux 3.0 以外的作業系統的節點不相容。 目前,機密虛擬機和 Pod 沙盒仍不支援 eBPF 主機路由。
eBPF 主機路由只能針對叢集中的所有節點啟用。 不支援混合式節點案例。
Windows 節點不支援 Azure CNI(由 Cilium 驅動),同樣也不支援 eBPF Host Routing。
eBPF 主機路由無法與 靜態出口閘道一起使用。
不支援透過自控安裝並使用 ACNS 效能模式的 Istio Ambient。
Pricing
這很重要
進階容器網路服務是一項付費供應項目。 如需定價的詳細資訊,請參閱 進階容器網路服務 - 定價。
後續步驟
瞭解如何在 AKS 上啟用 eBPF 主機路由 。
欲了解更多關於Azure Kubernetes Service (AKS)先進容器網路服務的資訊,請參見 什麼是 Azure Kubernetes Service (AKS) 的先進容器網路服務?。
探索 Advanced Container Networking Services 中的容器網路可觀測性功能,請參閱 什麼是容器網路可觀測性?。