2016 was quite the year for the Kubernetes project. With record-setting attendance at Kubecon, almost bi-weekly feature releases to the Kubernetes platform, and large-scale adoption, Kubernetes has truly become the belle of the container ball over the past year.
But what exactly are the features of this container orchestration tool that make it truly indispensable? Why has it become so popular? These are important questions to answer if you want to understand the current state of Kubernetes and its future trajectory. After all, it’s not as if people are flocking to Kubernetes just because they like the name (at least, I don’t think so!).
In this post, we’ll take a look at some of the most exciting features in Kubernetes and see how they compare to other orchestration tools such as Docker Swarm and Mesos.
Kubernetes is an excellent platform for service orchestration. With a variety of primitives such as replica sets, daemon sets, pods, and services, applications can be grouped together, deployed, and immediately resurrected and scheduled by the controller-manager and scheduler in the event that they experience downtime.
Beyond the basics, however, I find that one of the greatest features of Kubernetes is the extensibility of the platform. The project has taken great pains to slowly but surely improve documentation and provide several API libraries to build on top of the existing platform. As a result, teams can both utilize Kubernetes internally and craft an abstraction to fit their precise needs.
Analogously, Kubernetes has a certain element of “pluggability.” What does this mean? Consider some of these features: the container runtime interface (CRI), third-party resources, customer schedulers, storage classes, etc. Using the container runtime interface, users are able to use different container runtimes such as Docker or rkt. Third-party resources allow users to build their own custom features (useful especially if they are leveraging the API). With the latest 1.6 release, users could utilize a variety of scheduling features (i.e. taints, tolerances, etc), or even utilize their own custom scheduler alongside the default one.
The project has also moved towards being more truly production-ready with improved SLOs, RBAC, and a better story around cluster federation. Version 1.6 can now handle up to 5,000 nodes and 150,000 pods. Role-based access control can be used to grant access only to certain resources within certain namespaces. Finally, cluster federation allows one to treat clusters across regions as a “cluster of clusters.” Several primitives such as daemonsets, replica sets, and ingress have also moved to being “federated.” That is to say, federated primitives are created via the federated control plane and may be distributed across clusters.
K8s vs. Swarm vs. Mesos
Clearly, the Kubernetes project is feature-rich and constantly expanding. But how does this compare with Docker Swarm or Mesos? Of all three container orchestration platforms, Docker Swarm is by far the easiest to install. Swarm mode is already built into Docker engine, and any node can easily join a cluster as a worker or manager. Furthermore, in basic benchmark tests, containers running on Docker Swarm had a faster start-up time.
A lot of Swarm’s ease-of-use, however, can be attributed to the relatively limited feature set of Docker Swarm. Apps are defined in a Docker Compose file, cannot necessarily be auto-scaled, and until a recent release, containers on different worker nodes had limitations in networking/communication between each other. Any additional features are based on or limited by the Docker API as well.
As for Mesos, the common thought process is that while Kubernetes is excellent as a service orchestration solution, i.e. for long-running services, Mesos is particularly well-suited to data- intensive jobs.
Mesos can be utilized with a variety of schedulers. And technically, even Kubernetes can be run on top of Mesos, but Kubernetes is often configured with the standard scheduler. Note, however, as of the 1.6 release, and the introduction of additional scheduling features and custom schedulers, that this is slowly changing. This makes Kubernetes perhaps a better choice for companies looking to simply run long running services, but makes Mesos a better choice for those with both a need for flexibility and the time and resources to manage a Mesos cluster.
In the last two years, Kubernetes has become quite popular as the container orchestration solution du jour, largely due to a rich feature set and its extensibility. It is important to remember, however, that the orchestration space does have other options, including Swarm and Mesos. Each have their own advantages and disadvantages.
About the Author
Sneha Inguva is an enthusiastic software engineer currently working on building developer tooling at DigitalOcean. She has worked at a variety of startups in the last few years, and has a unique perspective on building and deploying software in eclectic verticals (education, 3D printing, and casinos, to name a few). When she isn’t bashing away on a project or reading about the latest emerging technology, she is busy rescuing animals or practicing martial arts.
 Kubernetes vs. Mesos. https://platform9.com/blog/compare-kubernetes-vs-mesos/
 Kubernetes vs. Docker Swarm. https://platform9.com/blog/compare-kubernetes-vs-docker-swarm/
 Mesos, Kubernetes, and Infrastructure of the Future. https://softwareengineeringdaily.com/2016/12/14/mesos-kubernetes-and-infrastructure-of-the-future-with-dharmesh-kakadia/
We’re hiring! Check out the careers page for open positions in Amsterdam, London and San Francisco.
As usual, if you want to stay in the loop follow us on twitter @wercker or hop on our public slack channel. If it’s your first time using Wercker, be sure to tweet out your #greenbuilds, and we’ll send you some swag!