Here the three most common orchestrators within the OpenSource community: Docker Swarm, Kubernetes, and Apache Mesos.
Let's analyze the advantages and disadvantages that each one offers us, as well as its approach.
What is an orchestrator and what is it for?
An orchestrator makes sense when we have to manage a system with many containers implemented on a multitude of servers, in a clustered environment.
An orchestrator is responsible, among other things, for:
- ―Control and direct the creation of containers,
- ―Verify its correct execution
- ―Offer correct error management.
- ―Docker's own orchestration mechanism
- ―Easy for anyone who knows Docker
- ―Supported by AWS
- ―Has 2 elements: managers and workers (The different Managers organize among themselves so that one of them is the leader, assigning tasks to the workers. A manager can also function as a worker if the system requires it.)
- ―No fault control ⚠
- ―Created by Google
- ―Manages PODs instead of managing containers
- ―Based on a master-slave node model
- ―Uses its own API (custom operations can be added)
- ―Work with different types of containers (docker, rkt, cri-o or frakti)
- ―Compliant with Apache Mesos
- ―Manual installation ⚠
- ―Able of automatic scaling
- ―High availability
- ―Opensource cluster manager based on the Linux kernel
- ―Run on any platform
- ―Able to distributing the load between different servers
- ―Has 3 master nodes (1 active and 2 in standby prepared for failures)
- ―Has 3 Zookeepers (centralized systems of configurations that provide distributed synchronization and that allow fault tolerance)
- ―Supports linear scalability
- ―Offers high availability (thanks to Zookeepers)
- ―Compliant with Kubernetes and supports Docker and Appc containers.