Container orchestration is the big fight of the moment. With the container format, more or less, settled now, the focus has shifted to how users deploy and manage them.
As we learned our introduction to containers, the big stories in cloud are now all about orchestration, and how tools like Docker Swarm, Kubernetes, Marathon, and of course, Amazon ECS, simplify the management of container hosts in concert. In fact, established and new players alike are creating and bringing to market their container orchestration solutions.
Let’s take a dive into what is on offer.
For a long time, deploying an application into production involved running scripts and workarounds. Coordinating it all was a mess, until solutions like Chef, Puppet, and Ansible came around to simplify things. They made it easy for users to standardize testing and deployment. More importantly, they allowed developers to forget about all the intricate, underlying details.
The arrival of containers, then simplified cloud development even further, by standardizing the environment and abstracting away the specifics of the hardware and the operating system.
You could get an identical copy of your application stack in multiple environments — including your laptop. All this, by simply executing a simple command to set up a lightweight self-contained sandbox that can be used for development, testing, even operations and support.
Orchestration tools took this to the next level by allowing users to manage how multiple containers are created, upgrade and made highly available. They also control how container are connected, allowing developers to build sophisticated applications from multiple, microservice containers.
In short, the tools optimized the process of deployment and management through automation.
Or in other words, what does exactly a container orchestration tool do? Why these solutions are becoming more and more valuable as cloud workloads shift to containers, and the number of containers and hosts grow.
Here is a list of what orchestration involves, and what features and options a typical container orchestration tool offers:
Almost a dizzying amount of container orchestration tools are available now, many of them open source, others designed for cloud, or a specific platform. Docker being the most popular, offers a range of native tools like Docker Machine, Docker Swarm, Docker Compose that make clustering easy and effortless. Plentiful documentation is available for these solutions, in case you want to go this route.
And then you have Kubernetes, created by Google, that has now taken charge as the most feature rich and widely used container orchestration framework. Kontena is another such solution that is notably easier to set up than Kubernetes, though not as mature and configurable.
You also have tools like Mesos and Marathon, Rancher, and Nomad that all offer their own takes on container orchestration, and offer developers some unique options, depending on the size and scale of their cloud workloads.
On the Amazon Web Services side of things, the cloud provider not only offers its own solution, but also allows developers the ability to provision a Kubernetes cluster. The four recommended ways of doing so are kops, CoreOS Tectonic, kube-aws, and Kraken 2. Both Tectonic and kops work brilliantly here, the two other tools also have a lot to offer. That said, AWS users are recommend to run their masters and nodes on CoreOS, if possible.
Ultimately, which option you take will depend on the scale you want to achieve, and what ecosystem you are most comfortable using. No shortage of choices for container orchestration, though, so be sure to research and test your choice well before making the jump.