首页/网络/网络排障速查/容器网络排障流程(Docker/K8s 通用)
本包目录(235 条)
排查流程与方法36 条
连通性与链路检测54 条DNS 与解析排查46 条端口与连接检查37 条抓包与流量分析32 条应用层慢与丢包定位30 条

容器网络排障流程(Docker/K8s 通用)

容器里不通,先分清是「容器内 → 容器外」「宿主机 → 容器」还是「容器间」;按网络模型逐段验证:容器网卡 → 网桥/CNI → 宿主转发 → 外部网络。

网络排障速查网络更新于 2026-10-12
四段路径容器 veth → 网桥/overlay → 宿主机路由/NAT → 目标
常用命令docker network inspect / ip link / iptables -t nat / nsenter
K8s 加查Service、Endpoints、kube-proxy 规则

Docker 侧逐段验证

Docker 侧逐段验证
docker network ls && docker network inspect bridge | head -40
docker exec -it <容器> ping -c2 8.8.8.8            # 容器到公网(验证 SNAT)
docker exec -it <容器> cat /etc/resolv.conf         # 容器 DNS(常见坑)
ip -br a | grep -E 'docker|veth'                     # 宿主侧网桥
sudo iptables -t nat -L POSTROUTING -n -v | head     # MASQUERADE 是否命中

K8s 服务不通快速打点

K8s 服务不通快速打点
kubectl get pods -o wide
kubectl get endpoints <svc>            # Endpoints 为空 → 选择器/就绪探针问题
kubectl exec -it <pod> -- nslookup <svc>.<ns>.svc.cluster.local
kubectl exec -it <pod> -- nc -zv <svc> <port>
「容器内外网络不同」的经典分界:容器 ping DNS 名失败但 IP 直连成功 → 查 resolv.conf 与 CoreDNS;容器出公网失败但同宿主正常 → 查 SNAT/ip_forward。

易错点

  • 在容器里排查时忽略容器自身是独立网络命名空间,宿主机命令的结果不能直接代表容器
  • K8s Endpoints 为空仍去查网络插件,其实是就绪探针未通过

数据来源与参考

  • Docker 官方文档:Network drivers
  • Kubernetes 官方文档:Debug Services

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌