为什么 ewma 的注释不同?

why is this annotation of ewma are different?

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

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

在客户端向主节点请求服务期间,它完美地接收了请求,这意味着客户端从不同的 pods 和集群内的不同代理节点收到了不同的响应。

但是当我把注解改成这个注解时

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

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

这是为了提高可见度而发布的社区 Wiki 答案。随意展开。

根本原因:

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

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

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

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

解法:

使用 nginx.ingress.kubernetes.io/load-balance: ewma 注释是上述目的的优选解决方案。

基于documentsload-balance使用Peak EWMA方法进行路由。相比之下,upstream-hash-by,它是使用 IP 或其他变量的一致性哈希的负载平衡,并提供到同一 pod 的连接。

有关详细信息,请参阅本文 Kubernetes Nginx Ingress: Consistent hash subset load balancer