上一篇 下一篇 分享链接 返回 返回顶部

跨主机容器网络不通?高效排错指南

发布人: 发布时间:1 天前 阅读量:3

问题现象与排查前提

当跨主机部署的容器无法通过IP或服务名互访时,通常表现为Ping失败或业务请求超时。排错前需确认:所有主机节点网络互通(同一子网或已路由可达)、容器运行时(Docker/Containerd)和CNI插件(Calico/Flannel/Weave)已正确安装且状态正常。

逐层排查四步法

第一步:确认容器内部网络栈

在问题容器内执行ip addr查看IP配置,ip route检查默认路由,确保有指向网关的条目。使用ping 测试,若不通则检查容器端口映射或防火墙规则(iptables -L -n)。

第二步:验证宿主机侧转发

在源宿主机执行ip route get ,确认路由指向正确的CNI接口。检查/proc/sys/net/ipv4/ip_forward是否为1。使用tcpdump -i any icmp抓包,观察数据包是否到达宿主机。

第三步:检查CNI插件与Overlay网络

  • Flannel/VXLAN:确认宿主机间UDP 8285/8472端口可通,检查etcd中网络配置。
  • Calico:检查BGP邻居状态(calicoctl node status),确认IP池与路由策略正确。
  • Weave:执行weave status查看连接情况和DNS解析。

第四步:检查网络策略与安全组

Kubernetes环境下,检查NetworkPolicy是否误拦截。公有云环境需确认安全组或ACL放行了容器网络CIDR之间的流量。若使用iptables,执行iptables -L -n --line-numbers查看FORWARD链规则,确保CNI插件生成的规则未被覆盖。

常见根因速查表

  1. 宿主机隧道端口不通:云防火墙或物理防火墙阻断了VXLAN/IPIP端口。
  2. MTU不匹配:Overlay网络封装后包体超过MTU,导致分片丢失。建议统一设置MTU为1450或更低。
  3. IP地址冲突:不同集群或容器使用了重叠CIDR,导致路由混乱。
  4. CNI插件状态异常:重启容器引擎或重置CNI配置(例如systemctl restart kubelet && systemctl restart docker)。
  5. 内核参数未开启net.bridge.bridge-nf-call-iptables=1缺失导致桥接流量被iptables丢弃。

诊断工具推荐

使用nsenter -t -n ip addr直接进入容器网络命名空间。跨主机测试工具可选择iperf3mtr。对于Kubernetes环境,kubectl exec配合busybox镜像的wgetnc进行服务级连通性验证。

遵循以上结构化排错流程,80%以上的跨主机容器网络问题可在10分钟内定位根因。

目录结构
全文
企业微信 企业微信
微信公众号 微信公众号
服务热线: 400-790-1688
电子邮箱: 3310008520@qq.com