This article assumes you are familiar with Docker, if not click here to read this article.
- lean: lightweight, simple, accessible
- portable: public, private, hybrid, multi cloud
- extensible: modular, pluggable, hookable, composable
- self-healing: auto-placement, auto-restart, auto-replication
While deploying and orchestrating docker containers, you have two choices – Docker Swarm and Kubernetes. Docket Swarm was build specifically for solving docker orchestration in a standardised way and exposes standard docker APIs which can be used for communication with containers. Kubernetes builds upon 15 years of experience of running production workloads at Google and provides first class support for running docker containers.
Having tried both Docker Swarn and Kubernetes in production environments, I feel the best way to build and orchestrate docker containers is through Kubernetes. The horizontal auto scaling feature and self discovery via external descriptors makes its easier to manage dependencies. Kubernetes has a learning curve but provides greater flexibility and features. I also feel the dependency and configuration between containers is easier to maintain using Kubernetes.
One of the key feature that was missing in Kubernetes earlier, was the ability to manage and run federated services across cluster (geographical distributions workloads). This is an important feature, as we had to manually take care of this via geo centric load balancers. Kubernetes 1.3 (released on July 6) introduces cross-cluster service discovery, stateful workloads for applications and many more features.
We are running on GCP and I will post my experience when we move over to Kubernetes 1.3. So far GCP and Kubernetes have provided us one of the best option to build and scale container applications in a production environment. (Updated – here is the link to the production article)
If you are building and orchestrating docker containers, give Kubernetes a try and you won’t be disappointed. Also do ensure you build services (micro services) the right way and lay out right set of dependency to leverage the power and capabilities of container management solutions.