k8s 环境:service + deployment + hpa 本地: 创建大量的 http 请求访问 service
现象: 1 、刚开始正常访问 service ,service 对应一个 podA 的 endpointA ,实际请求由这个 podA 完成; 2 、访问量增大,hpa 指标超过阈值自动扩容; 3 、service 对应的 endpoint 变多,endpointA ,endpointB ,endpointC... 4 、新创建的 http 请求访问 service 还是只路由 endpointA ,service 并没有负载均衡; 5 、正在运行的代码不动,运行新的代码创建 http 请求访问 service 可以实现负载均衡,或者直接重启原先的代码,service 也可以负载均衡。
情况和链接( https://www.cnblogs.com/zhangdaopin/p/15850840.html )中的一样,但我环境中 service 的 sessionAffinity 并不是 ClientIP ,所以链接中的博客没有解决问题
请教大家如何使步骤 4 中的 service 能够负载均衡?
![]() | 1 rrfeng 2022-08-16 19:17:56 +08:00 负载均衡器类型是什么? |
![]() | 3 jelipo 2022-08-16 19:36:41 +08:00 有可能 http 是长连接 |
4 lsp7572 2022-08-16 19:42:12 +08:00 长连接吧,你看看是不是内部有连接池,连接池里实际上维护的都是到 A 的链接 |
![]() | 5 sujin190 2022-08-16 19:47:55 +08:00 service 是 4 层的端口转发,只能针对连接的负载均衡吧,你不重连自然不能重新分配请求新节点 |
6 oldboy627 2022-08-16 20:05:22 +08:00 kube-proxy 模式是什么? |
7 Daz 2022-08-16 20:10:44 +08:00 压测的 http 客户端,可能有链接复用,keep alive 的 新建 tcp 链接的时候,才有负载均衡 |
![]() | 11 sujin190 2022-08-16 20:30:51 +08:00 @Mark42 #10 具有 7 层负载均衡效果的应该 ingress 吧,如果用云的化,似乎腾讯、阿里、华为云实现的负载均衡其实也是分的,选择 4 层就是端口转发,7 层其实就是 ingress |
![]() | 13 d0m2o08 2022-08-17 08:34:43 +08:00 是不是配置了 sessionAffinity |
14 mengzhuo 2022-08-17 10:17:17 +08:00 nodePort 不会负载均衡吧,改成 cluster ip |
![]() | 15 konakona 2022-08-17 10:37:34 +08:00 你设了 deployment 的 resource 吗? |
16 chronos 2022-08-17 13:14:50 +08:00 看起来像是因为 http 的长连接导致的问题,对于 http server 还是用 ingress 做 7 层负载均衡吧。 |