Container orchestration automates the provisioning, deployment, networking, scaling, availability, and lifecycle management of containers. Today, Kubernetes is the most popular container orchestration platform, and most leading public cloud providers - including Amazon Web Services (AWS), Google Cloud Platform, IBM Cloud and Microsoft Azure - offer managed Kubernetes services. Other container orchestration tools include Docker Swarm and Apache Mesos.
Containers are lightweight, executable application components that combine application source code with all the operating system (OS) libraries and dependencies required to run the code in any environment.
The ability to create containers has existed for decades, but it became widely available in 2008 when Linux included container functionality within its kernel, and widely used with the arrival of the Docker open-source containerization platform in 2013. (Docker is so popular that "Docker containers" and "containers" are often used interchangeably.)
Because they are smaller, more resource-efficient and more portable than virtual machines (VMs), containers—and more specifically, containerized microservices or serverless functions—have become the de facto compute units of modern cloud-native applications. (For more on the benefits of containers see the interactive data visualization below)
In small numbers, containers are easy enough to deploy and manage manually. But in most organizations the number of containerized applications is growing rapidly, and managing them at scale—especially as part of a continuous integration/continuous delivery (CI/CD) or DevOps pipeline—is impossible without automation.
Enter container orchestration, which automates the operations tasks around deploying and running containerized applications and services. According to recent IBM research (PDF, 1.4MB), 70% of developers using containers report using container orchestration solution, and 70% of those report using a fully-managed (cloud-managed) container orchestration service at their organization.
While there are differences in methodologies and capabilities across tools, container orchestration is essentially a three-step process (or cycle, when part of an iterative agile or DevOps pipeline).
Most container orchestration tools support a declarative configuration model: A developer writes a configuration file (in YAML or JSON depending on the tool) that defines a desired configuration state, and the orchestration tool runs the file uses its own intelligence to achieve that state. The configuration file typically
The orchestration tool schedules deployment of the containers (and replicas of the containers, for resiliency) to a host, choosing the best host based on available CPU capacity, memory, or other requirements or constraints specified in the configuration file.
Once the containers are deployed the orchestration tool manages the lifecycle of the containerized application based on the container definition file (very often a Dockerfile). This includes
It's probably clear that the chief benefit of container orchestration is automation - and not only only because it reduces greatly the effort and complexity of managing a large containerized application estate. By automating operations, orchestration supports an agile or DevOps approach that allows teams to develop and deploy in rapid, iterative cycles and release new features and capabilities faster.
In addition, an orchestration tool's intelligence can enhance or extend many of the inherent benefits of containerization. For example, automated host selection and resource allocation, based on declarative configuration, maximizes efficient use of computing resources; automated health monitoring and relocation of containers maximizes availability.
As noted above, Kubernetes is the most popular container orchestration platform. Together with other tools in the container ecosystem, Kubernetes enables a company to deliver a highly productive platform-as-a-service (PaaS) that addresses many of the infrastructure- and operations-related tasks and issues around cloud-native application development, so that development teams can focus exclusively on coding and innovation.
Kubernetes’ advantages over other orchestration solutions are largely a result of its more comprehensive and sophisticated functionality in several areas, including:
Red Hat OpenShift on IBM Cloud leverages OpenShift in public and hybrid environments for velocity, market responsiveness, scalability and reliability.
With IBM Cloud Satellite, you can launch consistent cloud services anywhere—on premises, at the edge and in public cloud environments.
Run container images, batch jobs or source code as serverless workloads—no sizing, deploying, networking or scaling required.
Automatically determine the right resource allocation actions—and when to make them—to help ensure your Kubernetes environments and mission-critical apps get exactly what they need to meet your SLOs.
New IBM research documents the surging momentum of container and Kubernetes adoption.
Container orchestration is a key component of an open hybrid cloud strategy that lets you build and manage workloads from anywhere.
Docker is an open source platform for building, deploying, and managing containerized applications.