Kubernetes集群Ingress流量流向及超时故障tcpdump抓包咨询
Kubernetes 集群 Ingress 到 Pod 完整流量流向
标准流转路径(以主流的 Nginx Ingress Controller + 负载均衡暴露场景为例)
- 客户端发起请求,流量首先到达集群入口的四层负载均衡设备(云厂商托管集群为云LB,自建集群为自建SLB或直接指向Ingress节点公网IP),目标端口为对外暴露的80/443端口。
- 负载均衡根据后端健康检查结果,将流量转发到运行Ingress Controller实例的节点对应端口:若Ingress Controller采用HostNetwork模式则直接转发到节点的80/443端口,采用ClusterIP+NodePort模式则转发到对应NodePort端口。
- 流量进入Ingress Controller Pod的网络命名空间后,Controller会加载已同步的Ingress规则,根据域名、路径匹配结果,按照配置的负载均衡算法选择对应业务Service的后端Endpoint(即业务Pod IP+端口)。
- Ingress Controller主动向选中的业务Pod IP发起请求,流量经过集群CNI网络(Overlay/Underlay)转发到业务Pod所在的工作节点。
- 工作节点的网络栈经过iptables/ipvs规则匹配(由kube-proxy维护),将流量转发到目标业务Pod的网络命名空间,最终到达Pod内应用进程监听的端口。
- 业务Pod处理完请求后,响应报文沿原路径反向返回给客户端。
间歇性超时问题抓包位置清单
每个环节对应抓包点和命令参考:
- 集群入口节点/负载均衡后端节点公网网卡:验证客户端请求是否成功进入集群,参考命令:
tcpdump -i <公网网卡名称> host <客户端源IP> and port 80 or port 443 -nn - Ingress Controller所在节点物理网卡:验证负载均衡是否正常转发流量到Ingress节点,参考命令:
tcpdump -i <物理网卡名称> host <负载均衡出口IP段> and port <Ingress暴露端口> -nn - Ingress Controller Pod内部:验证流量是否到达Ingress Controller、Controller是否正常向后端业务Pod转发请求,参考命令:
kubectl exec -it <Ingress Controller Pod名称> -n <Ingress组件所在命名空间> -- tcpdump -i eth0 host <客户端源IP> -nn - 业务Pod所在工作节点物理网卡:验证Ingress Controller转发的请求是否到达业务节点,参考命令:
tcpdump -i <物理网卡名称> host <Ingress Controller Pod IP> and port <业务应用监听端口> -nn - 业务Pod内部:验证请求是否最终到达Pod、Pod是否正常返回响应,参考命令:
kubectl exec -it <业务Pod名称> -n <业务所在命名空间> -- tcpdump -i eth0 port <业务应用监听端口> -nn
常见间歇性超时关联排查点
除抓包外可同步排查以下配置:
- Ingress Controller配置的代理超时、连接超时参数是否过短
- kube-proxy的ipvs/iptables模式下的连接超时配置
- 集群节点、Pod之间的网络丢包率、延迟情况
- 业务Pod本身的并发处理能力、是否存在请求堆积
内容的提问来源于stack exchange,提问作者The Noob
相关产品推荐
相关产品推荐

