Containers have become popular as software development shifts from traditional methods to cloud-native development and DevOps.
In a containerized environment, a single instance of an operating system is shared across apps. For those more familiar with virtual machines, it’s useful to remember that each VM contains its own instance of a full operating system and is intended to operate as if it were a standalone server — hence the name.
Containers vs. VMs
Containers offer significant advantages over VMs, especially for cloud-native applications. As you can see, containers are lighter weight than VMs, so they utilize resources more efficiency. And because containers package together the necessary code, container runtime, tools, libraries, and settings, they are highly portable. A properly designed container can run on a developer’s laptop, on a data center server, or in a public cloud without modification.
Containerized applications typically decompose applications into separate services — microservices — each in its own container, and scale by running multiple instances of containers in parallel. (This helps make them resilient too.) As a result, you can have many more containers running at one time than you would VMs, and the lifespan of any given container instance is typically much shorter — minutes or hours. A running VM, by comparison, might persist for weeks or months.
This all adds up to some significant differences in the ways that containers must be managed. While you can start and stop containers manually, orchestration tools are required to manage containerized applications at scale.
This article explains what container orchestration does, its benefits, and explores some of the available orchestration tools.
What Is Container Orchestration?
Container orchestration enables you to keep up with the dynamic needs of containerized applications by automating deployment, management, scaling, and availability. The various solutions described below were designed to perform some or all of the tasks that you would otherwise have to perform manually:
- Starting and stopping containers
- Scheduling containers to run at a particular time
- Re-starting containers that have failed
- Scaling the number of container instances in response to load
Benefits of Container Orchestration
An orchestration solution can allow you to run your applications very efficiently, scaling resources when needed and releasing them when not needed. The benefits of container orchestration include:
- Enable large-scale, dynamic applications: While container orchestration can itself add complexity, it simply wouldn’t be possible to manage large-scale, containerized applications without it.
- Accelerate software development: The right container orchestration tools can make life easier for developers and operators, simplifying delivery of new and updated software.
- Reduce human error: As with any type of automation, container orchestration reduces the risks from human error.
- Increase availability: The right orchestration tools make your applications more resilient and available, both by re-starting containers that have failed and scaling the environment to accommodate changes in load.
- Centralized management: Container orchestration allows you to manage multiple servers or clusters of servers from a single interface.
- Enable standardization: Container orchestration makes it easier to standardize application deployments, for instance when you need to have multiple instances of the same applications running in different data centers or clouds.
What Are the Best Container Orchestration Tools?
The concept of containers has been around for a long time, but the idea really caught on after the founding of Docker in 2010. As containers became more popular, the need for orchestration tools, as described above, quickly became evident, and a number of container orchestration tools emerged in response. Here are some of the popular tools for container orchestration:
- Docker Swarm: Since Docker helped popularize containers, it’s probably not surprising that its orchestration tool, Docker Swarm, was among the first to gain visibility after its release in 2013. While some companies still use Swarm, it is better suited to smaller workloads, and its future is a bit uncertain. Mirantis purchased Swarm from Docker in 2019, along with Docker Enterprise. As noted in the Docker documentation: “Docker Swarm mode is built into the Docker Engine. Do not confuse Docker Swarm mode with Docker Classic Swarm which is no longer actively developed.”
- Kubernetes: Kubernetes is a container orchestration platform with roots in Borg, the platform that Google created internally to manage its vast infrastructure. Kubernetes was open-sourced by Google in 2014, and it has since become a Cloud Native Computing Foundation (CNCF) project. Kubernetes has grown to eclipse most other early container orchestration platforms, becoming the de facto standard. The latest CNCF annual survey describes Kubernetes as having crossed the chasm, concluding that “Container Adoption and Kubernetes has truly gone mainstream — usage has risen across organizations globally, particularly in large businesses.”
- Rancher: Rancher Labs got its start in 2014 to help companies with containerized applications. After initially developing its own container orchestration platform (Cattle) Rancher switched its focus to Kubernetes management in 2016. The company was acquired by SUSE in 2020.
- Red Hat OpenShift: OpenShift is a popular container platform. Similar to Rancher, Red Hat initially developed its own orchestration technology before adopting Kubernetes. OpenShift packages Kubernetes with a variety of additional capabilities and developer tools.
- Apache Mesos: Development of Mesos began in 2009, before the popularization of containers, as a tool to provide cluster management. It supports orchestration of both containerized and non-containerized workloads. Mesos 1.0 was released in 2016. The company Mesosphere commercialized Mesos with its DC/OS offering, making a very complex technology more accessible to IT teams. However, in 2019 Mesosphere changed its name to D2iQ, and switched to… Kubernetes.
- Public cloud services: Two of the popular public clouds (Amazon and Google Cloud Platform) offered container orchestration services prior to the ascendancy of Kubernetes and these services remain available. All of the public clouds now offer managed Kubernetes services. (Amazon Web Services offers EKS, Google has GKS, and Microsoft Azure has AKS.)
Kubernetes Is the De Facto Standard
If you take nothing else away from the various descriptions above, just remember that Kubernetes (or K8s) has essentially displaced the other alternatives for container orchestration. If your organization is planning to adopt containers, Kubernetes is probably in your future.
However, although K8s has become the de facto standard for managing containerized applications, there are several things you should know:
- K8s still has a reputation for being complex and hard to set up and operationalize.
- An extensive ecosystem of services and tools has sprung up around Kubernetes, adding tremendous value but further steepening the learning curve.
- Because of its popularity (and relative newness in the IT realm), K8s expertise is in short supply.
- DIY K8s management solutions require significant time and resources.
Companies that are just getting started with containers and Kubernetes must pay close attention to these issues when choosing partners and management tools. Software-as-a-Service (SaaS) and hosted solutions that provide Kubernetes management, monitoring, security, and other capabilities are also available. The SaaS model, in particular, provides fast time to value, robustness and reliability, flexible pricing, and ease of use.
Choosing SaaS tools to address business and operational needs can enable you to reduce reliance on hard to find technical experts. It’s also worth noting that, although many of us use the terms “hosted” and “SaaS” somewhat interchangeably, they are not the same thing. Choose wisely.