4 ms·
I wonder if the plan is to eventually split out core controllers into separate modules. For example, the replica set controller could easily be its own thing th
by lobster_johnson 9y ago
I wonder if the plan is to eventually split out core controllers into separate modules. For example, the replica set controller could easily be its own thing that ran as a pod; what it does, fundamentally, is ensure that the correct number of pods exists for a specific template.
Kubernetes is, conceptually, MVC. There's a data store of objects that describe what the world should look like, then a bunch of controllers that use this store to continually "converge" and "repair" the world so it looks like the description, plus APIs to perform specific actions such as perform a rollout or undo.
With this new addition, you get closer to erasing the conceptual distinction between "core" Kubernetes and everything else, which is great.
- hosh 9y agoI don't know if the core is going to get split. There might not be a reason (overhead with memory, more to supervise). It's kinda like MVC but I think it follows more closely to the control/convergence loop you are talking about (and from there, Promise Theory), whereas MVC don't really have that control loop. On the other hand, Operators are essentially non-core controllers. They can be highly specialized to a specific system (etcd, kafka, postgresql, etc.) Same with service catalogs.
- smarterclayton 9y agoIt's likely things will continue to subdivide gracefully, but I don't know how likely we are in the near term to split out the existing apis and controllers. The line will be drawn more strongly for net new things - do it as an extension, not in core.
- puzzle 9y agoIn 1.7 cloud controllers are already on their way to run externally.
- lobster_johnson 9y agoThat's great. Kubernetes is already huge, and a pain to develop against because it takes a long time to compile and test, never mind check out the code; moving stuff out should help here. (They've fortunately taken some steps to pull out the client into separate repos, so you no longer have to link your project against the entire Kubernetes codebase.)