在前文中我們提到, cilium install
預設安裝後, Cilium 功能啟用和禁用情況如下:
datapath mode: tunnel
: 因為相容性原因,Cilium 會預設啟用 tunnel(基於 vxlan) 的 datapatch 模式,也就是 overlay 網路結構。KubeProxyReplacement: Disabled
Cilium 是沒有完全替換掉 kube-proxy 的,後面我們會出文章介紹如何實現替換。IPv6 BIG TCP: Disabled
該功能要求 Linux Kernel >= 5.19, 所以在 Kernel 4.19.232 狀態為禁用。BandwidthManager: Disabled
該功能要求 Linux Kernel >= 5.1, 所以目前是禁用的Host Routing: Legacy
Legacy Host Routing 還是會用到 iptables, 效能較弱;但是 BPF-based host routing 需要 Linux Kernel >= 5.10Masquerading: IPtables
IP 偽裝有幾種方式:基於 eBPF 的,和基於 iptables 的。預設使用基於 iptables, 推薦使用 基於 eBPF 的。Hubble Relay: disabled
預設 Hubble 也是禁用的。今天我們嘗試關閉 tunnel 功能, 啟用本地路由(Native-Routing)功能以提升網路效能.
在未提供任何設定的情況下,Cilium 會自動以這種模式執行,因為這種模式對底層網路基礎設施的要求最低。
在這種模式下,所有叢集節點都會使用基於 UDP 的封裝協定 VXLAN 或 Geneve 形成網狀隧道。Cilium 節點之間的所有流量都經過封裝.
MTU 開銷
由於增加了封裝頭,有效載荷可用的 MTU 要低於本地路由(VXLAN 每個網路封包 50 位元組)。這導致特定網路連線的最大吞吐率降低。
本地路由資料路徑在 tunnel: disabled
時啟用,並啟用本機封包轉發模式。本機封包轉發模式利用 Cilium 執行網路的路由功能,而不是執行封裝。
在本地路由模式下,Cilium 會將所有未定址到其他本地端點的封包委託給 Linux 核心的路由子系統。這意味著,封包的路由將如同本地程序發出封包一樣。因此,連線叢集節點的網路必須能夠路由 PodCIDR。
設定本地路由時,Cilium 會自動在 Linux 核心中啟用 IP 轉發。
auto-direct-node-routes: true
來解決這個問題。本次實驗我們使用這種方式啟用本地路由.從現在開始, 後續的 cilium 安裝設定越來越複雜, 有很多客製化的設定引數, 所以我們從現在開始使用 Helm Chart 方式安裝 Cilium.