我们有一个带有istio的大约100个节点的kubernetes集群,并希望启用Locality LoadBalancing功能。由于我们的区域间数据流量过高,这每年最多可以为我们节省7万美元。
我遵循了docs并按如下方式设置了istio configmap:
...
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
...
然后部署了2个应用程序,其中一个仅响应部署节点的区域(我们正在使用VirtualService),而另一个仅响应请求。
来自us-east-1a中的节点的请求只能由相同区域中的节点答复,对吧?
但这没有发生。
我们还尝试在试验吊舱内设置此变量:
PILOT_ENABLE_LOCALITY_LOAD_BALANCING
当我从部署在“ us-east-1a”区域中的一个吊舱中获取日志时,它会显示来自两个区域的答复。
Istio版本:1.2.8
Kubernetes版本:1.14
感谢您的帮助!谢谢!
答案 0 :(得分:0)
在'Locality'
模式下,'Locality Load Balancing'
功能的背景下,如果区域之间的权重为'distribute'
,恐怕您的配置无效。
您的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中找到。