温馨提示×

怎样排查overlay故障

小樊
49
2026-09-03 11:16:02
栏目: 编程语言

“Overlay 故障”在不同技术场景下含义不同,最常见的是 容器/云原生中的 Overlay 网络(如 Docker Overlay、Kubernetes Flannel/VXLAN、Calico、Overlay 网络),也可能指 存储 Overlay(OverlayFS) 或 网络 Overlay(SDN)。下面以最常见、最易出问题的「容器/网络 Overlay 故障」为主,给你一套系统化排查思路。


一、先明确:是什么 Overlay?

先确认类型,避免排查错方向:

  • Docker Swarm:overlay 网络
  • Kubernetes:Flannel(VXLAN)、Calico(IPIP/VXLAN)、Cilium(VXLAN)
  • 存储:overlayfs(容器镜像层)
  • 云平台:VPC Overlay / SDN

二、Overlay 网络故障常见现象

  • 容器之间 跨主机不通
  • Pod 能通网关,不能通其他节点
  • 服务发现正常但网络超时
  • ping 通但 curl 不通
  • 时通时不通(MTU 问题典型)

三、标准化排查流程(强烈建议按顺序)

1️⃣ 确认基础网络是否正常(Underlay)

Overlay 依赖底层网络:

# 节点间
ping <node-ip>
# 端口是否通(VXLAN 通常是 UDP 4789)
nc -vuz <node-ip> 4789

✅ 不通 → 先修物理/云网络、安全组、防火墙


2️⃣ 检查 Overlay 网络是否存在

Docker

docker network ls
docker network inspect overlay_net

K8s

kubectl get networkattachmentdefinitions
ip link show | grep -E "flannel|vxlan|cali"

3️⃣ 检查 MTU(高频坑)

Overlay 会封装报文,MTU 通常要 ≤ 1450

ip link show

查看 vxlan / flannel.1 / eth0 的 MTU

✅ 问题表现:

  • 大包不通
  • curl 卡住
  • SSH 正常,HTTP 异常

✅ 修复示例(Flannel):

--iface=eth0
--mtu=1450

4️⃣ 检查路由是否正确

ip route

确认:

  • 容器网段 → overlay 接口
  • 没有黑洞路由

示例:

10.244.0.0/24 dev flannel.1

5️⃣ 检查 ARP / FDB(VXLAN 核心)

bridge fdb show
ip neigh

✅ 没有对端 MAC → Overlay 无法转发


6️⃣ 检查 Firewall / iptables / nftables

常见被挡:

  • VXLAN UDP 4789
  • 容器网段转发
iptables -L -n -v

确认:

  • FORWARD 未 DROP
  • MASQUERADE 正确

7️⃣ 抓包定位(终极手段)

在发送端

tcpdump -i eth0 udp port 4789

在接收端

tcpdump -i flannel.1

✅ 看:

  • 包是否发出
  • 是否封装
  • 对端是否收到

8️⃣ 容器/节点级别检查

docker ps
kubectl get pods -o wide
kubectl describe pod xxx

四、OverlayFS(存储)故障补充

如果是 overlayfs 挂载失败:

mount | grep overlay
dmesg | grep overlay

常见问题:

  • 下层只读
  • inode 耗尽
  • 权限错误

五、快速自检清单 ✅

  • [ ] 节点间 IP 通
  • [ ] UDP 4789 通
  • [ ] MTU ≤ 1450
  • [ ] 路由正确
  • [ ] FDB 有对端
  • [ ] iptables 未拦
  • [ ] 抓包验证

如果你能告诉我:

  • 用的是 Docker / K8s / 云厂商
  • 具体报错或现象

我可以直接给你针对性命令和解决方案。

0 踩