A Container Orchestrator is a software that deploys Containers on multiple host systems, balances traffic between individual containers, scale the amount of containers horizontally and vertically and ensure high availability and redundancy.
To that end a common architecture of orchestrators is to separate into a control plane, that maintains a global perspective, and singular worker nodes that instrument a local Container Runtime to do the bidding of the control plane.
The control plane typically provides:
- An API, that exposes the other components for integrations
- A Scheduler that assigns containers to hosts and makes decisions based on resource requirements
- A Controller that monitors container, host and cluster health and triggers mitigations as needed through the API
The most popular orchestrator is Google’s Kubernetes. Others of note are Docker Swarm, Hashicorp’s Nomad and Apache Mesos.