As Datawise.io (now Diamanti) is getting ready for the first KubeCon event, we thought it would be great to share with the community our perspective on why we chose to work with Kubernetes in addition to other open source projects. These were the criteria we used to look for a suitable orchestrator.
- Open and extensible – an open source platform that is easy to extend
- Strong team – a credible team with deep infrastructure expertise backing the open source
- Containers first – built primarily for containers and associated workflows
- Redundant – tolerates failures well
- Fire and forget – achieves desired state once all the dependencies are met, without enforcing ordering requirements
- Scalable – clean architecture that scales to large clusters
As we were looking last year, Kubernetes stood out among the available options for achieving most of these goals. Since then, we are seeing other projects like Docker Swarm and Mesos advancing their container clustering capabilities. We plan to work with them in the near future.
Kubernetes was built from the start around containers. Abstractions like replication controller are very powerful in maintaining the desired state of the cluster. There were a few important things missing for us however. For what we are building (in stealth), we needed networking and storage to be treated as first class citizens. Enterprises deploying cloud native applications look for predictable performance. Scheduling and resource management functions should account for storage and network performance.
Project 6 was born out of that need. Since then, we have been working with the community to upstream some of the work we have put in to Project 6. We have put a lot of effort into making these proposals very generic, so other vendors can leverage them. Listed below are our outstanding pull requests. We are hoping most of these would get accepted into the 1.2 release of Kubernetes.
- Scheduler extension – https://github.com/kubernetes/kubernetes/pull/13580
- FlexVolume – https://github.com/kubernetes/kubernetes/pull/13840
- Anti affinity scheduling – https://github.com/kubernetes/kubernetes/pull/14543
We welcome community feedback on these or on any other issues with deploying Kubernetes. Please write to us at[email protected]. We look forward to share our work with the community in more detail in upcoming blog posts.