问题背景:
K8S环境下,租户集群外的设备通过NodePort方式频繁发送UDP请求到集群内的某个Pod,当Pod因为升级或异常重启时,出现流量中断的现象。
问题分析:
在集群内通过nodeport发送udp请求正常;
租户通过集群外的主机访问请求包无法到达容器内,在主机上转vxlan虚拟网卡上的包,发下请求被转发到了一个不存在的podip 197.166.12.30;
cat /proc/net/nf_conntrack|grep nodeport端口发现dst记录了这个不存在的podip;
查看kube-proxy日志提示:
Failed to clear udp conntrack" err="error deleting conntrack en
tries for UDP port: 20400, error: error looking for path of conntrack: exec: \"c
onntrack\": executable file not found in $PATH" nodePort=20400
至此问题原因找到,因主机缺少conntrack命令导致conntrack表数据无法更新,记录中podip还是之前的,安装命令后重启kube-proxy解决!
yum install conntrack-tools -y