AWS EKS上的Kubernetes:有没有办法配置服务';s负载均衡器算法?

AWS EKS上的Kubernetes:有没有办法配置服务';s负载均衡器算法?,kubernetes,load-balancing,amazon-eks,Kubernetes,Load Balancing,Amazon Eks,我是Kubernetes的新手,目前在AWS EKS上部署了一个应用程序 我想配置部署在AWS EKS上的K8s群集的服务 下面是对我的问题的描述:我做了一个实验。我启动运行相同web应用程序的2个pod,并使用服务公开它们(该服务使用的是LoadBalancertype)。然后我得到了该服务的外部IP。然后发现我发送的请求并没有均匀地分配到我创建的服务下的每个Pod。更准确地说,我发送了3个请求,所有这三个请求都由同一个Pod处理 因此,我希望将负载平衡器算法配置为循环或最小连接,以解决此问题

我是Kubernetes的新手,目前在AWS EKS上部署了一个应用程序

我想配置部署在AWS EKS上的K8s群集的
服务

下面是对我的问题的描述:我做了一个实验。我启动运行相同web应用程序的2个pod,并使用服务公开它们(该服务使用的是
LoadBalancer
type)。然后我得到了该服务的外部IP。然后发现我发送的请求并没有均匀地分配到我创建的
服务下的每个
Pod
。更准确地说,我发送了3个请求,所有这三个请求都由同一个Pod处理

因此,我希望将负载平衡器算法配置为
循环
最小连接
,以解决此问题

我以前问过类似的问题,建议我尝试
kube代理的IPVS模式,但我没有得到关于如何应用该配置的详细说明,也没有在网上找到任何有用的资料。如果IPVS模式是解决此问题的可行方案,请提供一些详细说明


谢谢

您对负载平衡器的期望是正确的,它应该分发传入的请求。但是,由于您使用web套接字来执行请求,因此请求由同一个pod处理

web套接字在客户端和服务器之间使用持久连接,这意味着该连接将被重复使用,而不是建立新连接(代价高昂!)。因此,您无法获得所需的负载平衡

使用使用非持久性连接的内容来检查负载平衡功能:

$curl-H“连接:关闭”http://address:port/

有确切的问题,在测试外部负载平衡连接时使用
-H“Connection:close”
标记时,我仍然希望使用带
rr
sed
的IPV能够使服务间通信受益

总而言之,您需要设置节点的以下依赖项。我建议将这些添加到您的云配置中

#!/bin/bash
sudo yum install -y ipvsadm
sudo ipvsadm -lsudo modprobe ip_vs 
sudo modprobe ip_vs_rr
sudo modprobe ip_vs_wrr 
sudo modprobe ip_vs_sh
sudo modprobe nf_conntrack_ipv4
完成后,需要在
kube系统
名称空间中编辑
kube代理配置
,使其具有
模式:ipvs
调度程序:

最后,您需要使用适当的代理模式标志
--proxy mode=ipvs
--ipvs scheduler=
更新
kube proxy
守护程序的容器命令

以下是IPV可用的lb算法:

rr: round-robin
lc: least connection
dh: destination hashing
sh: source hashing
sed: shortest expected delay
nq: never queue

来源:

您使用什么来执行请求?基本上应用程序是关于音频到文本的转换。我启动服务,然后使用python脚本,通过查询服务的外部IP提供的url来执行请求。我正在使用WebSockethi,谢谢你的建议。我使用非持久连接检查了行为。并且验证了流量分布实际上不是
循环
。有什么方法可以配置服务来实现这一点吗?