Kubernetes IPVS模式下服务间长连接通讯的优化
转载自: https://blog.frognew.com/2018/12/kubernetes-ipvs-long-connection-optimize.html Kubernetes IPVS模式下服务间长连接通讯的优化,解决Connection reset by peer问题 前段时间测试将一套Kubernetes环境的 kube-proxy 切换成了ipvs模式,参见 Kubernetes kube-proxy开启IPVS模式 。 这套Kubernetes集群上主要运行http restful和gRPC两类服务,切换后这段时间还算稳定,只是最近某些客户端服务在调用gRPC服务时小概率出现 Connection reset by peer 的错误。 经过本地环境测试,当发一起一波请求到客户端服务预热一下,然后停止大约不到二十分钟时间,再请求客户端服务,客户端服务就会返回 Connection reset by peer 的错误,这说明是gRPC服务端将连接主动关闭了。 接下来再发起一波请求到客户端服务,一切又微服务正常。 在切换成ipvs模式后,客户端服务和gRPC服务之间的通信是基于ipvs的: 把上图中client看成是客户端服务Pod,3个Backend Pod(1~3)看成是后端的gRPC服务。 可以看出客户端服务和gRPC服务之间的交互路径: 1 2 3 4