我们有一个拥有大约100个节点的kubernetes集群,其中包含istio,并希望启用Locality LoadBalancing功能。这将为我们节省高达70,000美元/年的费用,因为我们的区域间数据流量太高。
我按照docs设置了istio配置映射,如下所示:
...
meshNetworks: {}
localityLbSetting:
enabled: true
distribute:
- from: us-east-1/us-east-1a/*
to:
"us-east-1/us-east-1a/*": 100
- from: us-east-1/us-east-1b/*
to:
"us-east-1/us-east-1b/*": 100
...
然后部署了两个应用程序,其中一个只是使用部署节点的区域进行响应(我们使用的是VirtualService),而另一个只是处理请求。
来自us-east-1a中的节点的请求应该只由同一区域中的节点应答,对吗?
但这是不可能的。
我们还尝试在pilot pods中设置此变量:
PILOT_ENABLE_LOCALITY_LOAD_BALANCING
当我从部署在区域"us-east-1a“中的一个pod中获取日志时,它会显示来自两个区域的回复。
Istio版本: 1.2.8
Kubernetes版本: 1.14
如有任何帮助,我们不胜感激!谢谢!
发布于 2019-12-14 01:58:01
在'distribute'
模式下的'Locality Load Balancing'
功能上下文中,如果区域/区域之间存在'Locality'
权重,恐怕您的配置是无效的。
istio-pilot的日志应该会为您提供有关它的线索,其形式类似于下面的警告:
<timestamp> warn failed to read mesh configuration, using default: 1 error occurred:
* locality weight must not be in range [1, 100]
我不认为你可以在Istio文档中找到它的文档,但是权重验证背后的逻辑可以在here中找到。
https://stackoverflow.com/questions/58700764
复制相似问题