Kubernetes

Ultimate flexibility at a high cost

Any Cloud
very high Complexity

Kubernetes is a container orchestration system, originally developed by Google. It is by far the most popular tool in its category which includes Docker Swarm, Apache Mesos and Hashicorps Nomad.

Kubernetes (or k8s in short) is a powerful tool and as such is also very complex to use and operate. There are two parts to using k8s:

  1. Setup and maintenance of a Kubernetes cluster
  2. Running your workload (application) on top of Kubernetes

This is not a guide for either of these tasks and there are plenty of good sources of information on how to perform either of those. However, one thing to remember is that operating and maintaining a safe, secure and reliable Kubernetes cluster requires expensive staff which might not be available to you. There are companies that take care of the first part, by providing managed Kubernetes clusters, including most of the major cloud providers.

Regardless of self-managed or vendor-managed clusters, you still need to modify and deploy your applications to run on Kubernetes to benefit from it. Kubernetes is a complex system with a steep learning curve and unless you are sure of what you need from it and how it can help you, you might spend too much money and time on it, just to get your application to work.

In short, if you want to run a future proof, scalable and highly flexible containerized PaaS for yourself, Kubernetes is the best option out there, but it's not a like-for-like alternative for Heroku.

Pros

  • Solid and battle tested
  • Largest community of experts, consultants and vendors amongst other open source containerization solutions

Cons

  • Very complex to run
  • Most likely requires changes to your application
  • Requires expert skill set to deploy applications