Chore: Improve the high availability level in large-scale cluster deployment.
What would you like to be added?
-
Split
SyncerasAgentin user cluster, and support two modes: 1.1Agentin user cluster watch hub cluster custom resources likesyncrule, and sync info into es directly. In this mode, hub cluster will not invade the user cluster. 1.2Syncerin hub cluster will dispatch crds and custom resources into user cluster, andAgentin user cluster watch self apiserver. in this mode,Agentcompletely self-looping within the user cluster, and sre could deployAgentindependently. -
Support more kubernetes versions.
Why is this needed?
-
Syncertakes up too much memory resource as the number of clusters increases, so a high availability solution is urgently needed. -
Better compatibility.
Karpor still needs too much memory in single large-scale cluster. It is the best way that Karpor can share memory with other operators deployed in user cluster.
High availability solutions may need to be considered in conjunction with projects such as Kuperator or OpenKruise
I am curious, why does Syncer need to support these two modes and in what scenarios should they be used?
Sorry, I am so busy recently and reply slowly for you.
Is push mode, hub cluster need dispatch resources to user cluster now (or even create agent directly in the future). This solution is friendly for users because users do not need focus on the agent. However, hub cluster need write permissions of user cluster which is not supportted for some scences.
In pull mode, agent is deployed by user cluster sre and watches hub cluster apiserver, hub cluster do not need write permission of user cluster.