我们在裸机上使用Kubernetes v1.9.5
,部署kubespray
,网络驱动程序 - flannel
。
当从pod转发到另一个服务的HTTP请求时,如果该服务没有端点,请求会挂起130秒(我通过NodeJS
网络库和curl
检查)。
这个值来自哪里?
我们注意到在编写试图建立服务连接的重试时。
任何帮助赞赏。
看起来iptables将DROP数据包,如果它的目标是一个不存在的端点,DROP将永远不会向请求者发送消息(DROP/REJECT)。这将导致请求者退休。重试取决于参数net.ipv4.tcp_syn_retries
,默认情况下它在CentOS-7中为6
当我在请求者pod运行的minion中设置net.ipv4.tcp_syn_retries=1
时,超时发生在3秒而不是2m 7.23s
我希望这可以澄清为什么如果请求是针对不存在的端点,curl或任何端口连接请求会长时间挂起。