Open dryheartGo opened 1 year ago
目前 Slime 支持多主的多集群场景,每套集群单独部署一套 Slime ,只管理本集群。
主从架构的多集群场景我们没有验证过,可以尝试通过配置 configSources
字段,指定多个 apiserver 地址来实现。一个例子如下
# slimeboot cr
apiVersion: config.netease.com/v1alpha1
kind: SlimeBoot
metadata:
name: limiter
namespace: mesh-operator
spec:
image:
pullPolicy: Always
repository: docker.io/slimeio/slime-limiter
tag: v0.6.0_linux_amd64
module:
- name: limiter
kind: limiter
enable: true
general:
disableGlobalRateLimit: true
disableAdaptive: true
disableInsertGlobalRateLimit: true
global:
log:
logLevel: info
configSources:
- address: k8s://xxx
- address: k8s://xxx
k8s 不同集群之间 pod 的 ip 可能会有冲突,我看了下代码 sourceSvc 是根据 dowloadAddress 获取的,这样是不是就可能获取到错误的依赖关系了~
k8s 不同集群之间 pod 的 ip 可能会有冲突,我看了下代码 sourceSvc 是根据 dowloadAddress 获取的,这样是不是就可能获取到错误的依赖关系了~
这里我们考虑的多集群场景前提是单网络,即多集群的pod ip可直接访问,不会彼此冲突
目前 Slime 支持多主的多集群场景,每套集群单独部署一套 Slime ,只管理本集群。
主从架构的多集群场景我们没有验证过,可以尝试通过配置
configSources
字段,指定多个 apiserver 地址来实现。一个例子如下# slimeboot cr apiVersion: config.netease.com/v1alpha1 kind: SlimeBoot metadata: name: limiter namespace: mesh-operator spec: image: pullPolicy: Always repository: docker.io/slimeio/slime-limiter tag: v0.6.0_linux_amd64 module: - name: limiter kind: limiter enable: true general: disableGlobalRateLimit: true disableAdaptive: true disableInsertGlobalRateLimit: true global: log: logLevel: info configSources: - address: k8s://xxx - address: k8s://xxx
我们在主从模式下配置了configSource,格式为k8s://https://xxxxxxxx.eks.amazonaws.com。但是limiter日志中会报错: level=error msg=[svcToIstioResHandler] [EventAdd] ConvertSvcAndEps error: failed to get related pod for endpoint。是我们的配置有问题吗?
这个configSource只实现了istio cofnigSource的部分功能
实际slime并没有从store里获取数据
这个configSource只实现了istio cofnigSource的部分功能
实际slime并没有从store里获取数据
意思是在多主架构的场景下目前slime的支持还不足是嘛
基本没有考虑多主架构的场景
这方向有很多东西可以做
使用External Control Plane方案部署Istio,limiter组件不支持
[ ] Configuration Lazy Loading [ ] Http Plugin Management [X] Adaptive Ratelimit [ ] Slime Boot
limiter log:
感觉是limiter使用了k8s api,无法找到remote cluster的CR信息