| 四段路径 | 容器 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。