slime-io / slime

An intelligent ServiceMesh manager based on Istio
https://slime-io.github.io/
Other
426 stars 78 forks source link

不支持External Control Plane方案架构 #319

Open dryheartGo opened 1 year ago

dryheartGo commented 1 year ago

使用External Control Plane方案部署Istio,limiter组件不支持

[ ] Configuration Lazy Loading [ ] Http Plugin Management [X] Adaptive Ratelimit [ ] Slime Boot

limiter log:

time=2023-03-16T09:54:26Z level=info msg=get err in queryServicePods, get service namespace/xxx-service faild, services "xxx-service" not found module=limiter pkg=controllers

感觉是limiter使用了k8s api,无法找到remote cluster的CR信息

cywang1905 commented 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 
whalecold commented 1 year ago

k8s 不同集群之间 pod 的 ip 可能会有冲突,我看了下代码 sourceSvc 是根据 dowloadAddress 获取的,这样是不是就可能获取到错误的依赖关系了~

cywang1905 commented 1 year ago

k8s 不同集群之间 pod 的 ip 可能会有冲突,我看了下代码 sourceSvc 是根据 dowloadAddress 获取的,这样是不是就可能获取到错误的依赖关系了~

这里我们考虑的多集群场景前提是单网络,即多集群的pod ip可直接访问,不会彼此冲突

xdccy commented 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 

我们在主从模式下配置了configSource,格式为k8s://https://xxxxxxxx.eks.amazonaws.com。但是limiter日志中会报错: level=error msg=[svcToIstioResHandler] [EventAdd] ConvertSvcAndEps error: failed to get related pod for endpoint。是我们的配置有问题吗?

MouceL commented 1 year ago

这个configSource只实现了istio cofnigSource的部分功能

实际slime并没有从store里获取数据

xdccy commented 1 year ago

这个configSource只实现了istio cofnigSource的部分功能

实际slime并没有从store里获取数据

意思是在多主架构的场景下目前slime的支持还不足是嘛

MouceL commented 1 year ago

基本没有考虑多主架构的场景

这方向有很多东西可以做