k8s service 无法负载均衡

2022 年 8 月 16 日
 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 能够负载均衡?

3962 次点击
所在节点    Kubernetes
16 条回复
rrfeng
2022 年 8 月 16 日
负载均衡器类型是什么?
Mark42
2022 年 8 月 16 日
@rrfeng service 是 nodeport 的
jelipo
2022 年 8 月 16 日
有可能 http 是长连接
lsp7572
2022 年 8 月 16 日
长连接吧,你看看是不是内部有连接池,连接池里实际上维护的都是到 A 的链接
sujin190
2022 年 8 月 16 日
service 是 4 层的端口转发,只能针对连接的负载均衡吧,你不重连自然不能重新分配请求新节点
oldboy627
2022 年 8 月 16 日
kube-proxy 模式是什么?
Daz
2022 年 8 月 16 日
压测的 http 客户端,可能有链接复用,keep alive 的

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

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

https://v2ex.xtra.eu.org/t/873287

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

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

© 2021 V2EX