作为IT DevOps,排查Kubernetes容器网络故障需结合网络插件(如Calico、Flannel、Cilium等)特性,遵循分层定位原则:
-
基础验证
kubectl describe pod
检查Pod状态及事件,确认CNI插件是否成功分配IPkubectl exec
进入容器执行ping
/curl
测试跨节点/跨命名空间通信
-
网络插件层
- 查看CNI插件日志(
journalctl -u kubelet
或插件组件日志) - 检查插件配置(如Calico的
calicoctl get ippool
验证IP池分配) - 核对节点路由表(
ip route
)与预期网络模型是否一致
- 查看CNI插件日志(
-
策略限制
- 通过
kubectl get networkpolicy
检查是否存在网络策略阻断流量 - 对Calico等插件使用
calicoctl get globalnetworkpolicy
查看全局策略
- 通过
-
服务发现
- 验证CoreDNS状态及
kubectl get endpoints
确认服务后端是否注册 - 检查kube-proxy的iptables/nftables规则(
iptables-save | grep <service>
)
- 验证CoreDNS状态及
-
底层网络
- 使用
tcpdump
在Pod veth接口/主机网卡抓包分析流量路径 - 测试节点间基础网络(VXLAN/IPSec隧道连通性)
- 使用
关键工具链:kubectl debug
创建临时诊断Pod,nsenter
进入容器网络命名空间,结合插件CLI(如calicoctl)验证配置。不同网络插件需参考其特定排查文档。