V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mark42
V2EX  ›  Kubernetes

k8s service 无法负载均衡

  •  
  •   Mark42 · 2022-08-16 19:13:09 +08:00 · 2857 次点击
    这是一个创建于 821 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条附言  ·  2022-08-17 17:09:20 +08:00
    谢谢大家,两个方法:
    1 、每次 http 请求关闭 TCP 连接;
    2 、使用 Ingress 做 7 层转发;
    都可以实现
    16 条回复    2022-08-17 13:14:50 +08:00
    rrfeng
        1
    rrfeng  
       2022-08-16 19:17:56 +08:00
    负载均衡器类型是什么?
    Mark42
        2
    Mark42  
    OP
       2022-08-16 19:19:34 +08:00
    @rrfeng service 是 nodeport 的
    jelipo
        3
    jelipo  
       2022-08-16 19:36:41 +08:00
    有可能 http 是长连接
    lsp7572
        4
    lsp7572  
       2022-08-16 19:42:12 +08:00
    长连接吧,你看看是不是内部有连接池,连接池里实际上维护的都是到 A 的链接
    sujin190
        5
    sujin190  
       2022-08-16 19:47:55 +08:00
    service 是 4 层的端口转发,只能针对连接的负载均衡吧,你不重连自然不能重新分配请求新节点
    oldboy627
        6
    oldboy627  
       2022-08-16 20:05:22 +08:00
    kube-proxy 模式是什么?
    Daz
        7
    Daz  
       2022-08-16 20:10:44 +08:00
    压测的 http 客户端,可能有链接复用,keep alive 的

    新建 tcp 链接的时候,才有负载均衡
    Mark42
        8
    Mark42  
    OP
       2022-08-16 20:24:25 +08:00
    @oldboy627 ipvs
    Mark42
        9
    Mark42  
    OP
       2022-08-16 20:25:53 +08:00
    @jelipo
    @lsp7572
    @Daz
    谢谢思路,我明天试一下
    Mark42
        10
    Mark42  
    OP
       2022-08-16 20:27:06 +08:00
    @sujin190 这个是和长连接一个思路么
    sujin190
        11
    sujin190  
       2022-08-16 20:30:51 +08:00
    @Mark42 #10 具有 7 层负载均衡效果的应该 ingress 吧,如果用云的化,似乎腾讯、阿里、华为云实现的负载均衡其实也是分的,选择 4 层就是端口转发,7 层其实就是 ingress
    Mark42
        12
    Mark42  
    OP
       2022-08-16 20:33:01 +08:00
    @sujin190 内网的集群,明天也试试 ingress 。thx
    d0m2o08
        13
    d0m2o08  
       2022-08-17 08:34:43 +08:00
    是不是配置了 sessionAffinity
    mengzhuo
        14
    mengzhuo  
       2022-08-17 10:17:17 +08:00
    nodePort 不会负载均衡吧,改成 cluster ip
    konakona
        15
    konakona  
       2022-08-17 10:37:34 +08:00
    你设了 deployment 的 resource 吗?
    chronos
        16
    chronos  
       2022-08-17 13:14:50 +08:00
    看起来像是因为 http 的长连接导致的问题,对于 http server 还是用 ingress 做 7 层负载均衡吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5681 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:38 · PVG 09:38 · LAX 17:38 · JFK 20:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.