karmada-io / karmada

Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration
https://karmada.io
Apache License 2.0
4.43k stars 877 forks source link

statefulset应用如何实现跨子集群部署 #4581

Open sysucjl opened 8 months ago

sysucjl commented 8 months ago

Please provide an in-depth description of the question you have: 假设karmada集群具有两个子集群:A和B

现有一个mysql应用的statefulset(副本数为5)需要迁移到karmada,PropagationPolicy是必要,根据配置不同,副本数可以被分发到一个或多个子集群

What do you think about this question?: 针对上述场景,主要有两个问题:

问题1:如果PropagationPolicy配置为 < 子集群A副本数=3,子集群B副本数=2 >,那么本质上就是分别在两个子集群都各自创建了一个statefulset。这样子就是将原来一个mysql集群,脑裂成了两个独立的mysql集群,这是不符合预期的。另外,如果启用了search组件,并且resourceregistries里添加了pod类型,那么会出现pod同名查询的问题(因为每个子集群都会有0号pod,它们的pod name是一样的)。

问题2:如果PropagationPolicy配置成全部副本分发子集群A或者子集群B,这样迁移后mysql应用能保持只有一个主从结构,但也没办法实现副本在多个子集群间容灾部署。

所以想请问下,官方能提供些statefulset迁移的最佳实践方法,或者后续针对statefulset跨子集群部署,有啥新特性不? Environment:

sysucjl commented 8 months ago

@RainbowMango @XiShanYongYe-Chang @liangyuanpeng

RainbowMango commented 8 months ago

We are working on it. See #4386. We hope to introduce a feature that can help to manage StatefulSet across clusters.