Azure K8s集群中同主机Pod间UDP报文被内核丢弃的问题排查求助
Azure K8s集群中同主机Pod间UDP报文被内核丢弃的问题排查求助
我在Azure的K8s集群里碰到了一个UDP报文转发的异常问题,想请大家帮忙排查下:
- 集群内有两个K8s服务:serviceA和serviceB。其中serviceA是LoadBalancer类型,并且配置了
externalTrafficPolicy=Local - 客户端向serviceA发送UDP报文,serviceA通过用户态代码将报文转发给serviceB,预期serviceB的Pod直接给客户端回包
- serviceA的Pod(podA)和serviceB的Pod(podB)存在被调度到同一台宿主机的情况
- 为了实现直接回包,我在podB的初始化容器里给宿主机添加了一条SNAT规则:把podB发出的UDP报文源IP从Pod IP替换成负载均衡的浮动IP,示例规则如下:
iptables -t nat -D POSTROUTING -p udp -s 10.224.0.157 --sport 9999 -j SNAT --to-source 20.225.34.72:9999 - 当前遇到的核心问题:当podA和podB在同一台宿主机上时,报文会被丢弃;两者不在同一主机时,报文能正常发出
备注:内容来源于stack exchange,提问作者feiyu_guo
相关产品推荐
相关产品推荐

