We’ve all probably heard enough about how Kubernetes is the Linux of the cloud, with the fastest adoption rate ever, etc. But Kubernetes is by no means the only orchestration option out there, and there is a fair share of Kubernetes alternatives. Kubernetes, Docker Swarm, Mesos, Nomad (and a few more) all fall into a class of DevOps infrastructure management tools known as container orchestration engines (COEs). These “orchestrators” give us a much-needed abstraction layer between the application containers that run on our resources and the actual resource pools themselves.
Working with containers in the cloud is all about allocating resources effectively. Things get complicated when you’re using multiple clouds along with an on-premises datacenter and deploying a variety of applications on them. Especially since these apps could be something simple like a small relational database or something bit more advanced like a streaming live video service.
Basics of orchestration
While all the Kubernetes alternatives may vary in how easy or difficult they are to use and what kind of features they support, there are some basics that they all seem to cover quite well. A good example would be service discovery, which is used to determine where various services are located on a network in a distributed computing architecture. Another good example is load balancing requests, whether internally generated in a cluster, or externally from outside clients.
These are just a few examples of the basic tasks performed by a high-level orchestration engine, and the list is quite endless with stuff like container scheduling, health checks, and storage management. It would also be a good idea to point out now that these orchestrators are evolving so quickly that what we know about them today may be pretty outdated a few months from now. Additionally, every month there are major new updates from the Kubernetes, Mesos, and Swarm and they’re not the only ones.
Kubernetes alternatives: Docker Swarm
You can’t think of Kubernetes alternatives and not think of Swarm and Docker Engine v1.12.0 and later that lets you deploy containers in Swarm mode. Much like Kubernetes, a Swarm cluster consists of Docker Engine deployed on multiple nodes where manager nodes perform orchestration and cluster management.
One of the main issues people have with Kubernetes is that it’s kind of hard to use, especially since it uses a different setup for each OS. Add to the fact that some manual intervention is required more often than not, and a user-friendly option like Swarm suddenly feels welcome. The advantage that Swarm has here is that it uses the Docker CLI to run all services, so with Swarm you only need to learn one set of tools.
Steve Singh, CEO of Docker, was asked in an interview quite point blank what he thought about the rapid adoption rate of Kubernetes, and he said he wasn’t worried. This is probably because if you’re a big corporation, using Swarm would be a lot cheaper than teaching thousands of employees how to use Kubernetes. On Docker, there’s almost no setup other than opting into the Swarm beta, which is in stark contrast to how Kubernetes requires you to map out your clusters before you even begin.
Another name we hear a lot nowadays is Apache Marathon and if you’re thinking what’s Marathon? It’s basically an orchestrator for Mesos. Wait, isn’t Mesos an orchestrator? Well, Mesos is actually a highly scalable resource manager. Mesosphere is a software solution that expands upon the cluster management capabilities of Apache Mesos with additional components like Marathon and Chronos. Mesos can redistribute workloads so unused nodes are powered off when not in use and at the same time can provide resource sharing. This also makes a great fail safe in case one of your nodes fails.
Mesos comes with a number of frameworks that use its resource sharing capabilities and Marathon is one such framework with the distinct capability of being able to launch other applications and frameworks. This is why Marathon is so often used as a container orchestration platform with Mesos. Additionally, Marathon can provide both scaling and self-healing for containerized workloads, is proven to scale, and runs in many a production environment.
Unlike the vast capabilities of Kubernetes 1.7, Nomad is designed with a very Spartan-like philosophy of having a small scope while coding. While Kubernetes is designed as a collection of interoperating services, Nomad is architecturally much simpler. Nomad is a single binary at both client and server ends and requires no external resources or management. Think of Nomad like one of those stripped-down container operating systems with just the bare minimum that includes a lightweight resource manager and a sophisticated scheduler.
If you’re looking for a well-distributed, highly available and operationally simple orchestration solution that supports virtualized, containerized, and standalone applications (including Docker), Nomad is really not a bad choice. Additionally, Nomad supports multi-datacenter and multi-region configurations and has been tested on clusters up to 5,000 nodes (as much as Kubernetes). It is believed that Nomad will work on much larger clusters as well.
Another of our Kubernetes alternatives, and an interesting one at that, comes from Finnish company Kontena, which like Swarm was designed to combat the long lead-time or steep learning curve required for Kubernetes production projects. The separate authentication server requirement and the fact that it’s written in Ruby are what make it stand out from the crowd. Additionally, fine-grained access control options and a good audit log make it especially attractive to enterprise environments.
Kontena can be installed on any cloud infrastructure running Linux either on a VM or bare metal or even on any public, private cloud, or hybrid mix. Like Kubernetes, Kontena works at a level of abstraction higher than containers where the building components of Kontena are called services. The grid is the outermost container of the Kontena system. Kontena also uses advance overlay networks like Weave and OpenVPN to allow inter-service communications.
Cutting out the middlemen
Now, though Kubernetes is more than a scheduler and includes service discovery and a rich set of APIs, inexperienced users need to be prepared to do a lot Googling before they can build custom environments. Setting up Kubernetes also requires a lot of planning since, as mentioned earlier, nodes need to be defined before you even get started. This is probably why there’s an entire industry rallying to provide managed Kubernetes services. It’s because Kubernetes is an incredibly powerful tool that’s pretty difficult to use.
This industry is quickly coming to be known as Kubernetes as a Service, and it includes loads of options from CoreOS, Platform9, Microsoft, and many more. The Kubernetes alternatives, however, cut out the middleman and give you an orchestration engine that’s a lot simpler to use. Large corporations would find it a lot easier to use Swarm than transitioning to the cloud with Kubernetes, especially if there are a lot of people involved in the transition. Smaller teams would prefer lighter solutions like Nomad because it’s a lot simpler and integrates well with existing Consul and Vault services.
Like everything else in the enterprise, the point is to be able to choose what best suits you and, more importantly, to have a choice in the first place. There’s no denying the absolute dominance of Kubernetes and the fact that it’s an excellent choice for a container orchestration tool. But it isn’t the only option, so don’t ignore these Kubernetes alternatives.
Photo credit: Pexels