1、现象:访问服务时出现如下报错
2、原因:通过 netstat -an 查看到连接 svc 的地址,其中 estab 状态的连接数,已经到达了可用的随机端口数量阈值,无法在新建连接了
执行命令查看: netstat -tan|grep ESTABLISHED|wc -l
sysctl -a|grep net.ipv4.ip_local_port_range
3、解决方案:最后通过修改了内核参数随机端口 net.ipv4.ip_local_port_range 端口范围才得以解决的
1.22+ 集群以上就不建议修改 net.ipv4.ip_local_port_range,因为这会和 ServiceNodePortRange 产生冲突
Kubernetes 的 ServiceNodePortRange 默认是 30000~32767,Kubernetes 1.22 及以后的版本,去除了 kube-proxy 监听 NodePort 的逻辑,如果有监听的话,应用程序在选用随机端口的时候,会避开这些监听中的端口。如果 net.ipv4.ip_local_port_range 的范围和 ServiceNodePortRange 存在重叠,由于去掉了监听 NodePort 的逻辑,应用程序在选用随机端口的时候就可能选中重叠部分,比如 30000~32767,在当 NodePort 与内核 net.ipv4.ip_local_port_range 范围有冲突的情况下,可能会导致偶发的 TCP 无法连接的情况,可能导致健康检查失败、业务访问异常等问题
修改命令如下
vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65535
执行生效
sysctl -p
标签:available,ip,range,报错,ipv4,Address,net,local,port From: https://www.cnblogs.com/zbhlinux/p/17565310.html