You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS部署的OpenFaas函数副本流量不均,不使用服务网格如何实现负载均衡

OpenFaaS EKS 环境无服务网格下流量均匀分配解决方案

1. 确认direct_functions配置实际生效

配置未正确落地是常见的无效原因,先做如下校验:

  • 执行kubectl get deploy/gateway -n openfaas -o yaml,检查gateway容器的环境变量direct_functions值是否为false
  • 若通过Helm部署OpenFaaS,执行helm get values openfaas -n openfaas确认该配置未被后续升级操作覆盖

2. 关闭函数Service的会话亲和性

这是流量无法分散的核心原因:OpenFaaS默认会为所有函数的Service自动配置sessionAffinity: ClientIP,用来复用TCP连接降低开销,该配置会把同一个客户端IP的所有请求都转发到同一个后端Pod。

全局生效方案(适用于所有新部署函数)

修改OpenFaaS controller的配置,添加环境变量service_session_affinity: "None",重启controller后新部署的函数都会默认关闭会话亲和性。

存量函数修复方案

手动调整对应函数的Service配置,执行命令:
kubectl patch svc <你的函数名称> -n openfaas-fn -p '{"spec":{"sessionAffinity":"None"}}'

3. 适配长连接场景的额外配置

如果你的调用端使用长连接访问函数,就算关闭了会话亲和性,已经建立的长连接会一直绑定到同一个后端Pod,需要额外调整:

  • 在调用客户端配置连接池最大生命周期,比如设置单连接最多复用30秒或10次请求后主动销毁重建,强制新连接分配到其他副本
  • 可将EKS集群的kube-proxy代理模式从默认的iptables切换为IPVS模式,IPVS的轮询调度策略能实现更均匀的流量拆分,适配长连接场景下的负载均衡需求

4. 效果验证

将目标函数副本数调整为≥2,使用压测工具发送100次以上无会话绑定的独立请求,分别统计每个函数Pod的日志接收请求数,差值在10%以内即为配置生效。

内容的提问来源于stack exchange,提问作者Damith Udayanga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:06