k8s service 无法负载均衡

2022-08-16 19:13:09 +08:00
 Mark42

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 能够负载均衡?

2866 次点击
所在节点    Kubernetes
16 条回复
rrfeng
2022-08-16 19:17:56 +08:00
负载均衡器类型是什么?
Mark42
2022-08-16 19:19:34 +08:00
@rrfeng service 是 nodeport 的
jelipo
2022-08-16 19:36:41 +08:00
有可能 http 是长连接
lsp7572
2022-08-16 19:42:12 +08:00
长连接吧,你看看是不是内部有连接池,连接池里实际上维护的都是到 A 的链接
sujin190
2022-08-16 19:47:55 +08:00
service 是 4 层的端口转发,只能针对连接的负载均衡吧,你不重连自然不能重新分配请求新节点
oldboy627
2022-08-16 20:05:22 +08:00
kube-proxy 模式是什么?
Daz
2022-08-16 20:10:44 +08:00
压测的 http 客户端,可能有链接复用,keep alive 的

新建 tcp 链接的时候,才有负载均衡
Mark42
2022-08-16 20:24:25 +08:00
@oldboy627 ipvs
Mark42
2022-08-16 20:25:53 +08:00
@jelipo
@lsp7572
@Daz
谢谢思路,我明天试一下
Mark42
2022-08-16 20:27:06 +08:00
@sujin190 这个是和长连接一个思路么
sujin190
2022-08-16 20:30:51 +08:00
@Mark42 #10 具有 7 层负载均衡效果的应该 ingress 吧,如果用云的化,似乎腾讯、阿里、华为云实现的负载均衡其实也是分的,选择 4 层就是端口转发,7 层其实就是 ingress
Mark42
2022-08-16 20:33:01 +08:00
@sujin190 内网的集群,明天也试试 ingress 。thx
d0m2o08
2022-08-17 08:34:43 +08:00
是不是配置了 sessionAffinity
mengzhuo
2022-08-17 10:17:17 +08:00
nodePort 不会负载均衡吧,改成 cluster ip
konakona
2022-08-17 10:37:34 +08:00
你设了 deployment 的 resource 吗?
chronos
2022-08-17 13:14:50 +08:00
看起来像是因为 http 的长连接导致的问题,对于 http server 还是用 ingress 做 7 层负载均衡吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX