DC/OS vs Kubernetes: What are the differences?
What is DC/OS? The Datacenter Operating System. The easiest way to run microservices, big data, and containers in production. Unlike traditional operating systems, DC/OS spans multiple machines within a network, aggregating their resources to maximize utilization by distributed applications.
What is Kubernetes? Manage a cluster of Linux containers as a single system to accelerate Dev and simplify Ops. Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.
DC/OS can be classified as a tool in the "Cluster Management" category, while Kubernetes is grouped under "Container Tools".
Some of the features offered by DC/OS are:
- High Resource Utilization
- Mixed Workload Colocation
- Container Orchestration
On the other hand, Kubernetes provides the following key features:
- Lightweight, simple and accessible
- Built for a multi-cloud world, public, private or hybrid
- Highly modular, designed so that all of its components are easily swappable
"Easy to setup a HA cluster" is the primary reason why developers consider DC/OS over the competitors, whereas "Leading docker container management solution" was stated as the key factor in picking Kubernetes.
DC/OS and Kubernetes are both open source tools. It seems that Kubernetes with 54.2K GitHub stars and 18.8K forks on GitHub has more adoption than DC/OS with 2.16K GitHub stars and 451 GitHub forks.
According to the StackShare community, Kubernetes has a broader approval, being mentioned in 1018 company stacks & 1060 developers stacks; compared to DC/OS, which is listed in 19 company stacks and 12 developer stacks.
Our whole DevOps stack consists of the following tools:
- GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
- Respectively Git as revision control system
- SourceTree as Git GUI
- Visual Studio Code as IDE
- CircleCI for continuous integration (automatize development process)
- Prettier / TSLint / ESLint as code linter
- SonarQube as quality gate
- Docker as container management (incl. Docker Compose for multi-container application management)
- VirtualBox for operating system simulation tests
- Kubernetes as cluster management for docker containers
- Heroku for deploying in test environments
- nginx as web server (preferably used as facade server in production environment)
- SSLMate (using OpenSSL) for certificate management
- Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
- PostgreSQL as preferred database system
- Redis as preferred in-memory database/store (great for caching)
The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:
- Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
- Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
- Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
- Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
- Scalability: All-in-one framework for distributed systems.
- Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.