Container orchestrators are tools that automate container deployment, administration, and scaling tasks. They allow you to reliably manage fleets of hundreds or thousands of containers in production environments.
Orchestrators simplify container admin by letting you think in terms of application components instead of individual containers. They’re able to take control of all your app’s requirements, including config values, secrets, and network services.
In this article, we’ll explore some of the most popular orchestrators and related tools.
We will cover:
Most developers start with containers using local tools such as Docker, interacting with one container at a time. Standalone Docker instances are rarely used in production, though, because they’re difficult to scale and susceptible to host failure.
Orchestrators add the missing management layer, allowing multiple physical hosts (usually termed Nodes) to act as a single logical deployment target (a Cluster). The orchestrator distributes containers across the Nodes, producing a fault-tolerant architecture.
Container orchestrators support the use of containers across different clouds, datacenters, and environments. They provide tooling that lets you consistently deploy your containers, then seamlessly rollout changes across all your instances. Orchestrators replace containers when they fail and can scale your applications automatically or on-demand. Without orchestration, it’s challenging to provision additional service capacity during traffic spikes.
Container orchestration needs to be supported by a robust toolchain that lets you deploy, configure, and monitor your applications. When selecting a tool, you should consider its ease of use, how well it integrates with other solutions, the administrative overhead it creates, and its track record for security and support.
Here are some of the best you can choose in no particular order.
Kubernetes is the best-known container orchestration tool. It was designed by Google to support “planet-scale” workloads of billions of containers each week. Kubernetes development is now led by the Cloud Native Computing Foundation (CNCF).
Kubernetes uses a declarative model to define the ideal state of your container infrastructure. You write YAML files that describe what you want to see. The system automatically applies the correct actions to achieve the state you express.
The Kubernetes architecture consists of a centralized control plane and multiple worker Nodes. The control plane receives instructions via its API server. It schedules containers onto available Nodes, then watches in a loop to ensure the state is maintained.
Red Hat OpenShift is a container orchestrator that builds upon Kubernetes by adding Platform-as-a-Service (PaaS) and GitOps functionality. It helps to automate application management by offering built-in monitoring, policy control, and security capabilities.
OpenShift includes source-to-image support that builds container images for you. It inspects your app’s source and produces an image that’s ready to deploy. OpenShift also has native integrations with other software delivery tools, such as Jenkins CI/CD pipelines.
Several different OpenShift editions are available, including both cloud-hosted and self-managed versions. The basic OpenShift Kubernetes Engine is promoted as an enterprise Kubernetes distribution. The next step up is OpenShift Container Platform, adding support for serverless, CI/CD, GitOps, virtualization, and edge computing workloads. The final tier is Platform Plus which includes extra administration and security features for the most demanding situations.
Docker Swarm mode is a container orchestrator that’s built into Docker. Any Docker installation can enable Swarm mode to start deploying containers across multiple physical machines.
Swarm mode is a simpler alternative to more complex orchestrators like Kubernetes. One host is elected the swarm manager. It schedules new containers onto the other machines in the swarm. Most Swarm interactions are similar to regular docker CLI commands, which makes it an approachable starting point for newcomers to orchestration.
Swarm supports load balancing, service discovery, rolling updates, and declarative scaling. When you change a container’s replica count, the swarm manager will automatically create or remove containers to maintain the desired state. Swarm also automatically detects worker failures and assigns replacement containers to healthy hosts.
Hashicorp Nomad is a lightweight orchestrator which focuses on simplicity. It’s easy to set up and maintain, shipping as a single cross-platform binary with few resource overheads.
Nomad is distinguished by its support for non-container workloads. It lets you use one tool to manage both containerized cloud-native solutions and your legacy applications. Nomad can natively manage static binaries, traditional virtual machines, and interactions with system commands, all in one consistent workflow.
Nomad works across clouds and regions. Because it’s so small, it’s easy to scale and utilize in many different environments. You can deploy Nomad equally quickly in production and on developer workstations.
Kubernetes has a reputation for being tricky to set up and run. This doesn’t need to be the case: fully managed cloud services let you provision a new cluster in seconds without having to configure the control plane or manually connect your Nodes.
There are several options available, with all major cloud providers now participating in the space:
- Amazon Elastic Kubernetes Services (EKS) works with the AWS cloud and on-premises datacenters. It features straightforward integration with other AWS services.
- Google Kubernetes Engine (GKE) includes a hands-off “Autopilot” mode which automates every part of your Kubernetes infrastructure. It also supports a per-Pod billing model, where you only pay for your workload’s consumption.
- Azure Kubernetes Service (AKS) works with other Azure services to provide a unified security, identity, and cost management solution for existing Microsoft customers. It also integrates with Visual Studio, Visual Studio Code, and GitHub actions to offer automated end-to-end CI/CD pipelines.
- DigitalOcean Kubernetes is DigitalOcean’s Kubernetes service. It supports high availability and automatic scaling. You only pay for the Nodes, load balancers, and storage volumes in your cluster.
Any of these solutions can be used to rapidly spin up Kubernetes and start deploying your apps.
SUSE’s Rancher is a Kubernetes management platform. It supports all flavors of Kubernetes, including managed services and your own self-hosted clusters. It can also be used with other orchestrators, including Docker Swarm and Mesos.
Rancher centralizes Kubernetes access control, security, and operations when you’re working with multiple clusters. You can create users, roles, and projects once, then use them across all your clusters. It provides a single dashboard for monitoring your environments, regardless of the cloud platform that hosts them.
Portainer is another cluster management tool. It’s a simpler alternative to Rancher that supports Kubernetes, Docker Swarm, and Nomad environments. It can also work with regular Docker containers, too.
The Portainer dashboard displays all your environments and the workloads within them. You can rapidly deploy apps using custom templates or Helm charts. Portainer also centralizes user management to make it easier to safely grant access to your clusters.
KubeSphere is an enterprise-grade Kubernetes platform that works across clouds and tenants. In this respect, it’s similar to Rancher, but KubeSphere also emphasizes its developer-friendly UI and modular components. You can add, replace, and customize modules to create the platform you require.
KubeSphere can be deployed to an existing Kubernetes cluster or launched as a standalone Linux binary. Once it’s running, you’ll find a clean and modern UI that lets you connect to your existing clusters and create new ones on-demand.
Apache Mesos is a generic clustering tool that supports all kinds of compute architecture, not just containers. It’s proven to scale to tens of thousands of nodes, offers non-disruptive upgrades, and has a highly available control surface.
Whereas tools like Kubernetes are specifically container orchestrators, Mesos is better thought of as an operating system for your entire infrastructure. It’s built upon the same principles as the Linux kernel, but applied to distributed systems. Scheduling is handled by pluggable modules that specify how tasks should be prioritized and run.
AWS Fargate represents a hands-off approach to container orchestration. It uses a serverless model where containers and other infrastructure components are created automatically, by inspecting the workloads you deploy.
Fargate runs your apps using either Elastic Container Service (ECS) or Kubernetes clusters created in Elastic Kubernetes Service (EKS). Deployed apps benefit from built-in monitoring, log collation, and security by design. Fargate automatically scales your compute resources to meet your app’s requirements.
Cloudify is an “orchestrator of orchestrators” which offers self-service access to new container environments. It integrates different infrastructure providers and automation tools, including Kubernetes, Docker Swarm, Terraform, and Ansible.
Using Cloudify, you can quickly deploy resources into different environments with unified governance and compliance. It can manage your container infrastructure, as well as the workloads you deploy to that infrastructure. It’s designed to work equally well across both public clouds and private datacenters.
GitLab is one of the leading development platforms for source control and CI/CD. It also includes native integration with Kubernetes, offering support for both pull-based GitOps and push-based CI/CD deployments.
After connecting your cluster, you can deploy your projects straight to Kubernetes by using GitLab’s Auto Deploy capabilities. There’s also support for canary deployments and secure tunneling when you install the GitLab Agent inside your cluster.
Container orchestrators automate container management tasks. They deploy your containers, restart them after failures, and scale them out automatically based on changes in user demand.
Kubernetes is the most popular orchestrator, but it’s not alone in the field. Alternatives such as OpenShift and Docker Swarm can be better suited to specific workloads, while ecosystem tools like Rancher and Portainer make it even easier to interact with your clusters.
Orchestration is key to modern DevOps workflows. The best tool to use depends on your application’s requirements, the other technologies you’re interfacing with, and the amount of control you require. It’s also good practice to assess how you’ll manage the orchestrator’s own infrastructure.
Spacelift with Kubernetes helps you achieve a native GitOps flow. Kustomize and Helm also work great with Spacelift, and by taking advantage of our extensive selection of policies, you can easily automate compliance checks.
The Most Flexible CI/CD Automation Tool
Spacelift is an alternative to using homegrown solutions on top of a generic CI. It helps overcome common state management issues and adds several must-have capabilities for infrastructure management.