代码之家  ›  专栏  ›  技术社区  ›  newcomers

为什么ewma的注释不同?

  •  0
  • newcomers  · 技术社区  · 2 年前

    我的集群中有一个10个吊舱的服务,它向主节点发送多个请求,持续一个多小时。 我在ingress资源中添加了一个注释,并用一些注释对其进行了修改,我使用的第一个注释只是将负载平衡器方法更改为ewma负载平衡。

    Annotations:       nginx.ingress.kubernetes.io/load-balance: ewma
    

    在客户机从主节点请求服务的过程中,它完美地收到了请求,这意味着客户机从不同的POD和集群内的不同代理节点收到了不同的响应。

    但是当我把注释改成这个注释的时候

    nginx.ingress.kubernetes.io/upstream-hash-by: "ewma"
    

    客户端每次都从同一个pod和同一个节点收到相同的答案,甚至我在一秒钟内发送了5次服务请求,持续了30多分钟。它们的实施是否正确?为什么它们不同?

    0 回复  |  直到 2 年前
        1
  •  1
  •   Andrew Skorkin    2 年前

    这是一个社区维基答案,发布目的是提高可见性。请随意扩展它。

    根本原因:

    节点应该从客户端接收相同的请求(负载平衡),同时节省机器资源。

    因此,需要在以下注释之间找到最佳解决方案(基于问题):

    nginx.ingress.kubernetes.io/load-balance: ewma
    

    nginx.ingress.kubernetes.io/upstream-hash-by: ewma
    

    解决方案:

    使用 nginx.ingress.kubernetes.io/load-balance: ewma 出于上述目的,注释是更好的解决方案。

    基于 documents : load-balance 使用峰值EWMA方法进行布线。相比之下 upstream-hash-by ,这是使用IP或其他变量的一致哈希进行负载平衡,并提供到同一pod的连接。

    有关更多信息,请参阅本文 Kubernetes Nginx Ingress: Consistent hash subset load balancer .