DEV Community

Discussion on: Kubernetes vs Docker vs OpenShift vs ECS vs Jenkins vs Terraform

Collapse
 
madalinignisca profile image
Madalin Ignisca

Kubernetes is an ecosystem of components meant for orchestration based on multiple technologies, all around containers. OpenShift is a Kubernetes certified distribution, with strong opinionated setup made by RedHat. Similar, there are Charms Kubernetes, MicroK8s, Rancher, K3S and a lot more Kubernetes distributions. Setting up yourself Kubernetes from source, is a huge project, and would end up in another distribution actually.

Docker is kind of a different platform, as it extends on top of the containers framework, and it did change in last half of decade the standards in containers, and it optionally includes their own Kubernetes minimal distribution. Their orchestration component, Swarm, is Kubernetes aware, and when you deploy to Docker, Swarm can orchestrate either Docker's native networking and services concepts or it's Kubernetes implementation. This products are not really suitable for a comparison and confusing people that are competitive products.

There are companies which use both Docker and a Kubernetes distribution, some using Docker's Kubernetes distribution, other a certified or not certified distribution.

As an example, I use Docker for development as it's easier to setup containerized development workspaces compared to Kubernetes, and I use MicroK8s for small projects and if I would need to be involved in some large project, I would use Charms Kubernetes.

Another case is managed Kubernetes, like EKS, CKE or Digital Ocean's implementation. While might be great for some projects where there aren't experienced Kubernetes experts, I tend to think that avoiding vendor locking is healthier for a project.

Here is where in automation, using something like Terraform + Ansible, when using MicroK8s or Charms Kubernetes, and also OpenStack if using dedicated servers, can allow a business move in hours a huge project from one infrastructure provider to another one, which can save a business if the infrastructure provider is not fitting the business needs. If you use something particular to that provider, even if it's Kubernetes based setup, the locked components might be a pain and expensive migration process.

PS: migration in hours means being able to extend by high availability the cluster to another provider, and starting to drain nodes on the "to run away from" provider, which will take time for data to be migrated 100%. This is one great power of Kubernetes as it allows to keep live the project and consumers would never feel a downtime.