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 层负载均衡吧。
|