Why is networking not in the core code? I understand there are many different needs and environments but it seems like an opportunity to get many people contributing to a common project.
edit: This is for Office Hours, they asked for questions to be posted on SO. Maybe a new tag is appropriate.
https://github.com/kubernetes/community/blob/master/events/office-hours.md
Cause there are literally dozens of ways to configure networking, depending on so many factors that it is hard or even impossible to say that one of them is the one. Plus, for many it can be observed that networking is one of the hardest parts of bootstraping a cluster, and you really need it to be tailored to your needs. There is no "one fits all" in this scope. It's just not possible. There have been multiple ways to network since like 1960s, competing systems, different ideas. Some people survive with static routing, other need dynamic like RIP/OSPF another scale calls for BGP. CNI is as far as it makes sense - provides a common interface that is pluggable with different implementations. That is how it is, how it should be, and how it most likely will be for a long time :)