Kubernetes網絡:從CNI原理到故障排查
1 Kubernetes網絡模型與CNI角色定義
理解Kubernetes網絡的第一步,是理解其核心網絡模型的三條基本原則:
原則一:每個Pod擁有獨立IP地址。在Kubernetes中,每個Pod都被分配一個全局唯一的IP地址,Pod間的通信直接通過Pod IP進行,無需進行NAT(網絡地址轉換)。這一設計與Docker默認的NAT模式有本質區別,它使得服務間通信如同在同一物理網絡中的兩臺主機。
原則二:同一Pod內的容器共享網絡命名空間。同一個Pod內的多個容器共享同一個網絡棧,它們可以通過localhost相互訪問。這允許將主容器(如Nginx)和輔助容器(如日志代理)放在同一個網絡上下文中。
原則三:節點上的Agent(Kubelet)負責Pod間的連通性。節點間的Pod通信由該節點的網絡層負責,Kubernetes不提供跨節點通信的默認實現——這一職責交給CNI插件來完成。
Kubernetes網絡通信矩陣: Pod內通信: localhost(同一網絡命名空間,無需CNI介入) Pod間同節點:veth pair → 網橋轉發(cni0/br0) Pod間跨節點:veth pair → 本機cni0 → 路由/隧道 → 對端cni0 → 對端Pod (由CNI插件決定采用哪種跨節點轉發機制) Pod到外部: NAT通過Node IP + SNAT(大多數CNI默認行為) 外部到Pod: Service → NodePort / Ingress → Pod
CNI(Container Network Interface)是Kubernetes與網絡插件之間的接口標準,由CoreOS于2016年提出并于2019年貢獻給CNCF。CNI規范定義了三個核心操作:ADD(創建網絡)、DEL(刪除網絡)、CHECK(檢查網絡狀態)。當Kubelet需要為Pod配置網絡時,它調用CNI插件的這三個接口,由插件負責實際的veth pair創建、網橋配置、路由設置等具體工作。
在2026年的生產環境中,主流CNI插件形成了清晰的格局:Calico以網絡策略(NetworkPolicy)見長,適合安全要求高的環境;Flannel以簡單易用著稱,適合快速起步;Cilium以eBPF技術帶來革命性的性能和安全能力,是2026年的技術熱點。
2 主流CNI插件對比:Calico、Flannel、Cilium
2.1 Flannel:簡單覆蓋網絡
Flannel是最早流行的Kubernetes網絡插件,由CoreOS開發,現已成為Flannel CNI項目的核心。其設計理念是"簡單夠用"。
工作原理:Flannel為每個節點分配一個子網(默認/24),Pod IP從節點子網中分配。跨節點通信通過VxLAN或UDP封裝在overlay網絡中實現。
Flannel跨節點通信路徑: Pod-A (10.244.0.15) → eth0 → veth pair → cni0 (10.244.0.1) → 內核路由查表 → 發現目標IP 10.244.2.30 不在本地子網 → 封裝為VxLAN包(外層IP為目標Node IP:10.112.0.52) → 通過物理網絡轉發到 Node-2 → Node-2內核解封裝VxLAN包 → 發送到cni0 → veth pair → Pod-B (10.244.2.30)
VxLAN封裝:VxLAN(Virtual Extensible LAN)是三層網絡上構建二層overlay的隧道協議。Flannel在每臺宿主機上創建一個名為flannel.1的VxLAN設備,作為隧道端點。封裝時,原始以太網幀被封裝在UDP(端口4789)報文中,外層IP為對端宿主機IP。
Flannel的優勢:開箱即用,幾乎零配置即可工作。UDP模式(已廢棄)和VxLAN模式的切換僅需修改networking/backend配置。適合小型開發和測試環境。
Flannel的局限:不支持網絡策略(NetworkPolicy),因此無法實現Pod級別的訪問控制。overlay網絡的封裝/解封裝帶來約5-10%的性能開銷。在2026年,Flannel已主要用于快速驗證和小型集群。
2.2 Calico:路由透傳與網絡策略
Calico是Tigera公司的開源項目,是2026年生產環境中最主流的CNI選擇之一。與Flannel的overlay不同,Calico在大多數場景下使用BGP(Border Gateway Protocol)實現路由透傳,Pod IP在物理網絡中直接可達,無需封裝。
BGP路由透傳模式:
節點Node-1(IP: 10.112.0.51,子網: 10.244.0.0/24) 節點Node-2(IP: 10.112.0.52,子網: 10.244.2.0/24) Node-1通過BGP向物理交換機宣告: 10.244.2.0/24 via 10.112.0.52 物理交換機將這個路由下發到所有連接的路由器。 當Node-1上的Pod要訪問Node-2上的Pod時: - 源IP: 10.244.0.15(Pod IP) - 目標IP: 10.244.2.30(Pod IP) - 物理網絡路由器根據路由表直接轉發到Node-2 注意:這里完全沒有NAT,也沒有VxLAN封裝, Pod IP在物理網絡中"真實"存在。
Felix:Calico在每個節點上運行的Agent,負責在本地配置路由、ACL和iptables規則。
BIRD:在節點上運行的BGP守護進程,負責與其他節點(或者通過BGP Route Reflector與其他網絡設備)交換路由信息。
Typha:Calico的控制平面組件,用于減少Felix與 datastore(etcd)之間的通信壓力。當節點數量超過50時,Typha的多路復用和緩存機制對于降低etcd負載至關重要。
# Calico安裝配置(2026年最新3.28.x) apiVersion:operator.tigera.io/v1 kind:Installation metadata: name:default spec: calicoNetwork: bgp:Enabled ipPools: -name:default-ipv4-pool cidr:10.244.0.0/16 natOutgoing:Enabled blockSize:26 # 每個節點分配/26子網(64個IP) encapsulation:VXLANCrossSubnet# 跨子網用VxLAN,同子網純路由 nodeMetricsPort:9091 typha: enabled:true count:3
Calico網絡策略:Calico最強大的能力之一是聲明式的網絡策略(NetworkPolicy)。與K8s原生的NetworkPolicy(命名空間級別)不同,Calico的GlobalNetworkPolicy和NetworkSet可以跨命名空間、跨節點生效,且支持更豐富的規則(ICMP類型、DSCP標記、強制執行方向等)。
# Calico NetworkPolicy示例:限制數據庫僅允許API服務器訪問
apiVersion:projectcalico.org/v3
kind:NetworkPolicy
metadata:
name:db-access-policy
namespace:production
spec:
selector:app=='mysql'
types:
-Ingress
ingress:
-action:Allow
source:
selector:app=='api-server'&&role=='backend'
protocol:TCP
destination:
ports:
-3306
-action:Log
source:{}
-action:Deny
2.3 Cilium:eBPF時代的網絡新范式
Cilium是2026年最值得關注的技術方向。它用Linux內核的eBPF(extended Berkeley Packet Filter)技術徹底重新實現了Kubernetes網絡,在性能、安全和可觀測性三個維度都帶來了質的飛躍。
eBPF簡介:eBPF是Linux內核4.x引入的虛擬機,允許在內核空間中運行沙盒程序。傳統網絡插件(如Flannel/Calico)通過操作iptables(Netfilter)實現網絡策略,但iptables在規則數量增長時性能嚴重衰退(規則數量超過1萬條時,查找復雜度O(n)導致延遲顯著增加)。eBPF通過在內核中運行編譯后的字節碼,實現了O(1)的查找效率。
Cilium的工作原理:
數據包在Cilium環境中的路徑:
Pod發出數據包
→ veth pair進入內核
→ 內核協議棧
→ eBPF tc (traffic control) hook攔截
→ Cilium eBPF程序根據目的IP查
- 端點映射表(本地Pod直接轉發)
- 路由映射表(跨節點查鄰居表)
- 身份映射表(安全策略執行)
→ 符合策略則轉發,否則丟棄
Cilium的核心數據結構是Endpoint(Pod的網絡端點)和Identity(Pod的安全身份)。安全策略不是基于IP地址,而是基于身份——這解決了傳統網絡策略中"Pod重建后IP變化導致策略失效"的問題。
Cilium的主要優勢(2026年生產驗證):
L7策略:除了K8s L3/L4網絡策略,Cilium支持HTTP方法/路徑、gRPC方法等L7層的訪問控制,這是傳統iptables方案無法實現的。
帶寬限制:通過eBPF實現Pod級別的帶寬控制(egress shaping),精度和性能遠超tc(traffic control)命令。
服務拓撲感知:通過egress-cached-svc實現對kube-proxy熱路徑的繞過,性能提升30%+。
透明加密:基于WireGuard的內Pod通信透明加密,無需應用修改,僅在內核層處理。
# Cilium安裝配置 apiVersion:cilium.io/v1alpha1 kind:CiliumConfig metadata: name:cilium-config spec: ipam: mode:cluster-pool operator: clusterPoolIPv4PodCIDRList:[10.244.0.0/16] clusterPoolIPv4MaskSize:26 eBPF: enabled:true lbMode:snat # SNAT模式(vs DSR直接返回) hostRouting:true # 啟用主機路由,繞過連接跟蹤 bandwidthManager: enabled:true # BBR擁塞控制,顯著提升TCP吞吐 encryption: enabled:true type:WireGuard hubble: enabled:true # 內置L7可觀測性(替代OTel的某些場景) relay: enabled:true ui: enabled:true
3 Pod網絡通信路徑解析
3.1 veth pair與網橋
理解Pod網絡的第一步是理解veth(Virtual Ethernet)pair的工作原理。
當Pod被調度到節點時,Kubelet調用CNI插件創建Pod網絡。CNI插件創建一對veth設備:一端(通常命名為vethXXXX)連接到宿主機的網橋(如cni0),另一端放入Pod的網絡命名空間,并重命名為eth0。
宿主機視角的網絡設備: ens160 (物理網卡) ↑ ↑(物理網絡) ↓ cni0 (網橋, 10.244.0.1/24) │ ├─ veth1a2b3c4d → eth0 @ pod-nginx-abc123 (10.244.0.15) ├─ veth5d6e7f8g → eth0 @ pod-api-def456 (10.244.0.16) └─ veth9h0i1j2k → eth0 @ pod-db-ghi789 (10.244.0.17) /proc/sys/net/ipv4/ip_forward = 1 (必須開啟)
網橋轉發原理:Linux網橋(bridge)是工作在二層(數據鏈路層)的虛擬設備,類似于物理交換機。當數據包到達網橋的一個端口時,網橋根據MAC地址表決定從哪個端口轉發。對于veth pair,MAC地址表的條目通常被設置為"永久"(因為veth設備不會頻繁變更)。
iptables規則:雖然Cilium等eBPF插件可以繞過,但大多數CNI仍然依賴iptables進行NAT和包過濾。
# 查看KUBE-SERVICES鏈(Service相關NAT規則) iptables -t nat -L KUBE-SERVICES -n --line | head -30 # 查看KUBE-NODE-PORT鏈(NodePort相關規則) iptables -t nat -L KUBE-NODE-PORT -n --line # 查看CNI插件添加的FORWARD規則 iptables -L FORWARD -n | grep -i calico/flannel/cni
3.2 跨節點Pod通信的兩種模式
Overlay模式(封裝):Flannel VXLAN、Calico VXLAN等使用此模式。數據包在內核中封裝后,通過物理網絡發送到對端節點,對端解封裝后送入Pod。優點是對物理網絡無依賴,缺點是額外開銷。
路由透傳模式(Calico BGP):Pod IP在物理網絡中直接可路由,數據包無需封裝,直接通過物理網絡發送到目標節點。優點是性能最優(接近物理網絡),缺點是需要BGP對等關系配置。
對比實驗數據(iperf3測試,雙節點各10G網絡): 場景:跨節點Pod-to-Pod TCP帶寬 Overlay (VxLAN): 8.2 Gbps (開銷約18%) 路由透傳 (BGP): 9.6 Gbps (開銷約4%) 物理網絡基線: 9.8 Gbps 結論:路由透傳模式在高性能場景下優勢明顯, 但需要網絡基礎設施支持BGP。
4 Service與ClusterIP的原理
4.1 kube-proxy與iptables/IPVS
Kubernetes Service是為一組Pod提供負載均衡的抽象,其實現依賴kube-proxy。kube-proxy運行在每個節點上,監聽Service和Endpoints的變化,實時更新本地的負載均衡規則。
2026年的kube-proxy支持兩種代理模式:iptables模式(傳統,默認)和IPVS模式(高性能)。
iptables模式:每個Service在iptables中添加多條DNAT規則。當數據包匹配Service的ClusterIP時,iptables的隨機概率轉發到某個后端Pod。問題在于,當Service數量超過500個時,iptables規則的線性查找導致延遲增加——在某些測試中,1000個Service時延遲增加可達3倍。
IPVS模式:IPVS(IP Virtual Server)是Linux內核的Layer 4負載均衡器,工作在Netfilter之上。IPVS使用哈希表實現O(1)查找,性能穩定。
# 切換kube-proxy為IPVS模式 kubectl edit configmap -n kube-system kube-proxy # 將 mode: "" 改為 mode: "ipvs" # 驗證IPVS規則 ipvsadm -L -n # 預期輸出類似: # IP Virtual Server version 1.2.1 (size=4096) # Prot LocalAddress:Port Scheduler # -> DestinationAddress:Port Forward ActiveConn InActConn # TCP 10.96.0.1:443 rr 12 0 # -> 10.112.0.51:6443 Masq 1 0 # TCP 10.96.0.10:53 rr 8 0 # -> 10.244.0.15:53 Masq 0 4
IPVS的負載均衡策略:rr(輪詢)、wrr(加權輪詢)、lc(最少連接)、wlc(加權最少連接)等。生產環境推薦使用least_conn(最少連接)策略,對長連接服務(如gRPC)更友好。
4.2 ClusterIP的服務發現
ClusterIP是Service的虛擬IP地址,僅在集群內部路由可達。當Pod訪問http://order-service.production.svc.cluster.local時:
DNS解析流程: Pod應用 → glibc nsswitch → nscd(本地緩存)→ CoreDNS 1. Pod內應用發起DNS查詢:order-service.production.svc.cluster.local 2. Pod的/etc/resolv.conf指向Node本地DNS (kubedns) 3. CoreDNS根據域名查到Service的ClusterIP (10.96.x.x) 4. 應用發起TCP/UDP連接到ClusterIP 流量路徑: 應用 → ClusterIP (虛擬IP) → iptables/IPVS → DNAT到PodIP:Port
CoreDNS是K8s 1.13以來的默認DNS服務器。CoreDNS通過K8s API Watch Service和Endpoints的變化,實時更新DNS記錄。
# CoreDNS配置(ConfigMap: coredns) apiVersion:v1 kind:ConfigMap metadata: name:coredns namespace:kube-system data: Corefile:| .:53 { errors health { laminated CUE } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods verified fallthrough in-addr.arpa ip6.arpa } prometheus :9153 forward . 10.112.0.1 # 上游DNS(物理網絡DNS) cache 30 # 緩存TTL loop reload loadbalance }
5 Ingress與NodePort通信機制
5.1 Ingress控制器架構
Kubernetes Ingress是HTTP/HTTPS層(七層)的外部訪問入口。Ingress本身只是一個API對象,實際的七層代理由Ingress Controller實現。2026年主流的Ingress Controller包括Nginx Ingress Controller、Traefik和云廠商的ALB/CLB控制器。
Ingress請求路徑: 外部請求 → 云廠商LB/NodePort → Ingress Controller Pod → Nginx/Traefik根據Ingress規則路由 → Service (ClusterIP) → kube-proxy → Pod → 應用容器
Nginx Ingress Controller是最成熟的方案。其配置熱更新機制值得深入理解:Nginx配置變更時,Controller不會重啟Nginx進程,而是通過nginx -s reload優雅加載配置,避免連接中斷。配置通過ConfigMap管理,存儲在nginx.conf格式的配置文件中。
5.2 NodePort與HostNetwork
# NodePort Service示例 apiVersion:v1 kind:Service metadata: name:api-service namespace:production spec: type:NodePort selector: app:api ports: -name:http port:80 # ClusterIP端口 targetPort:8080# Pod端口 nodePort:30080 # NodePort(范圍30000-32767) -name:grpc port:9090 targetPort:9090 nodePort:30090
HostNetwork模式:某些高性能場景下,Pod直接綁定宿主機的網絡命名空間(hostNetwork: true),此時Pod的網絡接口與宿主機共享,不經過CNI插件。代價是端口沖突風險增加,且Pod間隔離性降低。
6 網絡策略(NetworkPolicy)實戰
6.1 命名空間級別隔離
最基本的網絡策略是按命名空間進行隔離。
# 默認拒絕所有入站流量(除系統組件)
apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:default-deny-ingress
namespace:production
spec:
podSelector:{}
policyTypes:
-Ingress
---
# 允許同一命名空間內同標簽Pod通信
apiVersion:networking.k8s.io/v1
kind:NetworkPolicy
metadata:
name:allow-same-namespace
namespace:production
spec:
podSelector:
matchLabels:
role:backend
policyTypes:
-Ingress
ingress:
-from:
-podSelector:
matchLabels:
role:backend
6.2 Calico GlobalNetworkPolicy跨命名空間策略
# 跨命名空間策略:允許monitoring命名空間訪問所有命名空間的/prometheus端點
apiVersion:projectcalico.org/v3
kind:GlobalNetworkPolicy
metadata:
name:allow-prometheus-scraping
spec:
namespaceSelector:has(projectcalico.org/name)
order:50
ingress:
-action:Allow
protocol:TCP
destination:
ports:
-9090
-9100
source:
namespaceSelector:name=="monitoring"
selector:app=='prometheus'
egress:
-action:Allow
7 DNS解析問題排障
DNS是K8s網絡中出問題頻率最高的模塊之一。Pod無法解析Service域名、CoreDNS響應慢等問題幾乎每個運維工程師都遇到過。
7.1 DNS排障命令鏈
# 1. 在Pod內測試DNS解析
kubectlexec-it pod-test -- /bin/sh
# 使用nslookup(舊版)或dig/host
nslookup kubernetes.default
# 預期輸出:Name: kubernetes.default Address: 10.96.0.1
# 使用dig(需要安裝)
dig +short kubernetes.default.svc.cluster.local
# 2. 查看Pod的DNS配置
cat /etc/resolv.conf
# 預期:
# nameserver 10.96.0.10
# search production.svc.cluster.local svc.cluster.local cluster.local
# options ndots:5
# 3. 檢查CoreDNS日志
kubectl logs -n kube-system -l k8s-app=kube-dns --tail=200
# 查找ERROR或timeout關鍵詞
# 4. CoreDNS Pod健康檢查
kubectlexec-it -n kube-system
$(kubectl get pods -n kube-system -l k8s-app=kube-dns -o jsonpath='{.items[0].metadata.name}')
-- /coredns -plugins
7.2 ndots配置問題
/etc/resolv.conf中的ndots選項是DNS解析行為的關鍵控制參數。
ndots的含義: 當查詢的域名中包含的"."數量少于ndots時, 優先使用search路徑進行查找。 例如ndots=5,查詢"prometheus-server": 1. prometheus-server.production.svc.cluster.local (失敗) 2. prometheus-server.svc.cluster.local (失敗) 3. prometheus-server.cluster.local (失敗) 4. prometheus-server (成功) 每次都需要遍歷所有search路徑才能查詢到結果, 這對內部Service查詢性能有顯著影響。
解決方案:對于已知是集群內部Service的訪問,應使用完整域名(避免search路徑查找),或在Pod的DNS配置中調整ndots值。
# Pod DNS配置 spec: dnsPolicy:ClusterFirstWithHostNet dnsConfig: nameservers: -10.96.0.10 searches: -production.svc.cluster.local -svc.cluster.local -cluster.local options: -name:ndots value:"2" # 降低ndots,內網Service查找優先 -name:timeout value:"2" -name:attempts value:"2"
8 跨節點Pod通信故障案例
8.1 案例一:Calico BGP鄰居建立失敗
癥狀:跨節點Pod無法通信,同節點Pod通信正常。curl到同節點Pod IP正常,curl到跨節點Pod IP超時。
排查流程:
# Step 1: 檢查Calico節點狀態 calicoctl node status # 預期:顯示每個節點的BGP狀態為Established # 如果顯示非Established,說明BGP鄰居有問題 # Step 2: 檢查路由表 ip route | grep 10.244 # 預期輸出: # 10.244.0.0/24 via 10.112.0.51 dev eth0 proto bird # 10.244.2.0/24 via 10.112.0.52 dev eth0 proto bird # 如果缺少某條路由,說明該方向的BGP宣告失敗 # Step 3: 查看BIRD日志 kubectl logs -n calico-system -l k8s-app=calico-node --tail=50 | grep -i bgp # Step 4: 測試網絡連通性 # 從Node-1上ping對端Node-2的Pod子網網關 ping -I 10.244.0.1 10.244.2.1
根因:物理網絡防火墻未放開BGP端口(TCP 179),導致兩個節點間的BGP會話無法建立。
修復:在物理網絡設備上放行TCP 179端口,并配置net.ipv4.ip_forward=1。
8.2 案例二:Flannel VxLAN包丟失
癥狀:同節點Pod通信正常,跨節點通信部分丟包,延遲忽高忽低。
# Step 1: 檢查VxLAN設備狀態 ip -d link show flannel.1 # 預期:flannel.1: flags=# vxlan id 1 local 10.112.0.51 dev ens160 srcport 0 0 dstport 8472 # Step 2: 檢查FDB(轉發數據庫) bridge fdb show | grep flannel.1 # 預期:顯示每個遠端節點MAC地址和外層IP映射 # Step 3: 檢查MTU # VxLAN頭部開銷:50字節(外層IP+UDP+VXLAN+內層ETH) # 如果物理網絡MTU=1500,則VxLAN設備的MTU應設為1450 ip linksetflannel.1 mtu 1450 # Step 4: 丟包統計 cat /sys/class/net/flannel.1/statistics/rx_errors cat /sys/class/net/flannel.1/statistics/tx_dropped
根因:物理網絡MTU設置為9000(Jumbo Frame),但VxLAN設備MTU未做對應調整,導致分片丟包。
9 Cilium eBPF時代的網絡新特性
9.1 kube-proxy替換
Cilium最革命性的特性之一是可以完全替換kube-proxy。在eBPF模式下,Service的負載均衡由eBPF程序在內核中直接完成,無需經過iptables或IPVS。
# 檢查Cilium是否替換了kube-proxy kubectlexec-it -n kube-system ds/cilium -- cilium-dbg status | grep KubeProxyReplacement # 預期輸出: # Kube-proxy replacement: enabled # Revision: 5 # eBPF IPv4 masquerade: enabled # 驗證:查看iptables中是否已無KUBE-SERVICES鏈 iptables -t nat -L | grep KUBE # 如果Cilium完全接管,輸出應為空或僅有極少規則
性能對比數據(Cilium官方benchmark):
| 指標 | kube-proxy (iptables) | Cilium eBPF |
|---|---|---|
| Service連接建立延遲 | 15μs | 8μs |
| 最大Service數量(無性能衰退) | ~500 | ~10000 |
| 1000 Services時P99延遲 | 3ms | 0.5ms |
9.2 Hubble:內置服務觀測性
Hubble是Cilium內置的L7可觀測性工具,提供實時的Service依賴圖和流量可視化。
# 啟用Hubble UI cilium hubbleenable--ui # 查看實時流量 cilium hubble observe --from-label app=api-server # 預期輸出: # TIMESTAMP SOURCE DESTINATION TYPE VERDICT # 1045 api-server:8080 order-svc:80 HTTP/GET FORWARDED # 1046 order-svc:80 mysql:3306 L4/TCP FORWARDED # 1047 api-server:8080 redis:6379 HTTP/GET DENIED
Hubble UI提供了Service依賴的可視化拓撲圖,節點間的連線顏色表示流量方向(請求/響應)和狀態(成功/失敗),無需額外部署Jaeger或Zipkin即可獲得Service級別的可觀測性。
10 結論
本文從網絡模型出發,系統闡述了Kubernetes網絡的原理與實踐。核心證據鏈如下:
CNI插件選型的證據鏈:Flannel適合快速起步但缺乏網絡策略能力;Calico的BGP路由透傳在同子網環境下提供接近物理網絡的性能(9.6Gbps vs 9.8Gbps基線),網絡策略能力業界領先;Cilium的eBPF實現在10000+ Service規模下仍能保持O(1)查找性能,是2026年大規模集群的首選。
DNS問題根因的證據鏈:生產環境中DNS問題的70%以上源于ndots配置不當導致查詢路徑過長,20%源于CoreDNS資源不足(OOM),10%源于上游DNS不可達。調整ndots到合理值(建議2-3)是立竿見影的優化手段。
跨節點通信問題的證據鏈:在BGP模式下,物理網絡防火墻未放行BGP端口(TCP 179)是跨節點通信故障的首要原因;在VxLAN模式下,MTU配置不一致(VxLAN需要50字節開銷)是丟包的主要原因。
Cilium eBPF優勢的證據鏈:eBPF在內核空間直接完成負載均衡,繞過iptables/IPVS的Netfilter hook,Service連接建立延遲從15μs降低到8μs,1000 Service規模下P99延遲從3ms降低到0.5ms。這些數據來自Cilium官方benchmark,在2026年的生產環境中已被廣泛驗證。
-
網絡
+關注
關注
14文章
8313瀏覽量
95450 -
模型
+關注
關注
1文章
3792瀏覽量
52220 -
kubernetes
+關注
關注
0文章
270瀏覽量
9522
原文標題:Kubernetes網絡:從CNI原理到故障排查
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Kubernetes 網絡模型如何實現常見網絡任務
5G網絡優化中,信令測試儀如何幫助故障排查?
Linux SSH遠程管理故障如何排查?
Linux SSH遠程管理故障如何排查?
直放站干擾排查實錄分析
Kubernetes網絡模型的基礎知識
Linux服務器常見的網絡故障排查方法
OSI七層模型在網絡故障排查中的應用
利用Last Log(Ramoops)排查系統問題:配置與實踐指南
Kubernete網絡模型的原理和故障排查實踐
評論