Container Orchestration

The orchestrator manages containers across nodes. Source: Mónica 2017.
The orchestrator manages containers across nodes. Source: Mónica 2017.

Container orchestration is the process of deploying containers on a compute cluster consisting of multiple nodes. Orchestration tools extend lifecycle management capabilities to complex, multi-container workloads deployed on a cluster of machines. By abstracting the host infrastructure, container orchestration tools allow the users deploying to entire cluster as a single deployment target.

The rise of lightweight and flexible containers, have given rise to new application architectures and fundamentally changed how applications are deployed and visualised today. The containerisation approach is to package the different services that constitute an application into separate compute containers, and to deploy those containers across a cluster of physical or virtual machines. With the rise of containerisation the need container orchestration all but obvious. As a definition,

Container orchestration is a process that automates the deployment, management, scaling, networking, and availability of container-based applications.

Discussion

  • What's the process of Container Orchestration?

    The process of deploying containers to multiple virtual machines or physical machines within a cluster to implement an application can be optimized through automation. This becomes more and more valuable as the number of containers and hosts grow. Container Orchestration envisions a number of features, some of which are mentioned below:

    • Provisioning hosts
    • Instantiating a set of containers
    • Rescheduling failed containers
    • Linking containers together through agreed interfaces
    • Exposing services to machines outside of the cluster
    • Scaling out or down the cluster by adding or removing containers
  • Where does container orchestration fit within the system stack?
    Orchestration sits between the apps and the container runtimes. Source: AWSforBusiness 2017.
    Orchestration sits between the apps and the container runtimes. Source: AWSforBusiness 2017.

    Container orchestration mediates between the apps or services above and the container runtimes below. Three main functional aspects of what they do include:

    • Service Management: Labels, groups, namespaces, dependencies, load balancing, readiness checks.
    • Scheduling: Allocation, replication, resurrection, rescheduling, rolling deployment, upgrades, downgrades.
    • Resource Management: Memory, CPU, GPU, volumes, ports, IPs.

    A survey from 2016 indicated that among the features considered important are Scheduling, Cluster Management, Service Discovery, Provisioning and Monitoring.

    In addition to the above, there are a number of non-functional aspects that are important: scalability, availability, flexibility, usability, portability, and security.

  • What are some Container Orchestration tools available?
    A selection of container orchestration tools. Source: Gill 2018.
    A selection of container orchestration tools. Source: Gill 2018.

    Some container orchestration tools worth mentioning include the following:

    • Docker Swarm: Provides native clustering functionality for Docker containers, which turns a group of Docker engines into a single, virtual Docker engine.
    • Google Container Engine: Google Container Engine, built on Kubernetes, lets you run Docker containers on the Google Cloud.
    • Kubernetes: An orchestration system for Docker containers. It handles scheduling and manages workloads based on user-defined parameters.
    • Mesosphere Marathon: Marathon is a container orchestration framework for Apache Mesos that is designed to launch long-running applications.
    • Amazon ECS: The ECS supports Docker containers and lets you run applications on a managed cluster of Amazon EC2 instances.
    • Azure Container Service (ACS): ACS lets you create a cluster of virtual machines that act as container hosts along with master machines that are used to manage your application containers.
    • Cloud Foundry’s Diego: Container management system that combines a scheduler, runner, and health manager.
    • CoreOS Fleet: Container management tool that lets you deploy Docker containers on hosts in a cluster as well as distribute services across a cluster.
  • Which container orchestration tool should I use?

    It's been said that Kubernetes has been widely adopted, particularly for stateless, composable workloads. Marathon is designed for long-running apps. Marathon can handle persistent containers. Those offered by Google, Amazon and Microsoft may result in vendor lock-in: it may be difficult to move your app to another provider at a later point. If you wish to build your own Platform-as-a-Service (PaaS), take a look at Cloud Foundry.

    Among the lesser known names are Cattle, Shipyard, Nomad, Empire, Aurora, Singularity, PaaSTA and Titus. In fact, some are tools and some are frameworks. Kubernetes is an orchestrator by itself. Apache Mesos is a distributed systems kernel upon which you can build custom orchestrators. DC/OS and Marathon is implementations on top of Mesos. Shipyard is considered an orchestrator orchestrator because it uses Docker Swarm. Amazon EC2 is an IaaS and Empire is a PaaS for containers, and both these have orchestrators built into them.

  • What are some security considerations when working with container orchestration tools?

    While many of the concerns when using containers are common to bare metal deployments, containers provide an opportunity to improve levels of security if used properly. Because containers are so lightweight and easy to use, it's easy to deploy them for very specific purposes, and the container technology helps ensure that only the minimum required capabilities are exposed.

  • Are there alternatives to managing containers without using an orchestration platform?
    Different ways by which teams manage their containers. Source: Hecht 2016.
    Different ways by which teams manage their containers. Source: Hecht 2016.

    While orchestration platforms (Docket Swarm, Kubernetes) are easier to use, there are other alternatives that may suit some teams. Those with programming background could use shell scripting to customize to their requirements. The same can be said of those who use configuration management tools for deployment. On the other end of the scale, teams can simply subscribe to a Containers-as-a-Service (CaaS) for minimal maintenance. For example, Google Kubernetes Engine (GKE) abstracts away and manages Kubernetes master nodes for you.

Milestones

2009
Mesos architecture. Source: Hindman et al. 2011, fig. 2.
Mesos architecture. Source: Hindman et al. 2011, fig. 2.

At UC Berkeley, Mesos starts as a research project to improve cluster utilization. The concept of containers is unknown at this time but there's a need to manage clusters of resources. Cluster frameworks MapReduce and MPI are examples. Mesos gives a common layer spanning diverse cluster computing frameworks.

Jul
2015

Version 1.0 of Kubernetes is released. It also becomes part of Cloud Native Computing Foundation (CNCF). Kubernetes was previously open sourced by Google in June 2014.

Sep
2015

Hashicorp's Nomad is released as a "cluster manager and scheduler designed for microservices and batch workloads".

Nov
2015

Version 1.0 of Docker Swarm is released. During beta, it was used for running 1,000 nodes and 30,000 containers on EC2. It was able to schedule containers in less than half a second. In July 2016, this is released as part of Docker v1.12 and is known as Swarm Mode.

Oct
2017

Docker announces that it will support Kubernetes. This means that operations have more choice (Docker Swarm Mode or Kubernetes) for managing their clusters/containers.

References

  1. AWSforBusiness. 2017. "What is container orchestration?" AWSforBusiness, October 24. Accessed 2018-07-05.
  2. Ankerholz, Amber. 2016. "8 Container Orchestration Tools to Know." Linux.com, April 12. Accessed 2018-07-04.
  3. Dadgar, Armon. 2015. "HashiCorp Nomad." Hashicorp Blog, September 28. Accessed 2018-10-05.
  4. Docker Docs. 2018. "Docker Release Notes." October 03. Accessed 2018-10-05.
  5. Fisher, Bret. 2018. "It's 2018, Is Swarm Dead? Answered by a Docker Captain." April 13. Accessed 2018-10-05.
  6. Gill, Navdeep Singh. 2018. "DevOps Tools, CI/CD, Testing and Latest Trends." Blog, XenonStack, February 01. Accessed 2018-07-05.
  7. Hecht, Lawrence. 2016. "TNS Research: The Present State of Container Orchestration." The New Stack, June 13. Accessed 2018-07-05.
  8. Hindman, Benjamin, Andy Konwinski, Matei Zaharia, Ali Ghodsi, Anthony D. Joseph, Randy Katz, Scott Shenker, and Ion Stoica. 2011. "Mesos: a platform for fine-grained resource sharing in the data center." Proceedings of the 8th USENIX conference on Networked systems design and implementation (NSDI'11), USENIX Association, Berkeley, CA, USA, pp. 295-308. Accessed 2018-10-05.
  9. Isenberg, Karl. 2016. "Container Orchestration Wars." SlideShare, June 22. Accessed 2018-07-05.
  10. Lloyd, Caleb. 2017. "Kubernetes in the Cloud: AWS vs. GCP vs. Azure." Codefresh, July 21. Accessed 2018-07-05.
  11. Luzzardi, Andrea. 2015. "Announcing Swarm 1.0: Production-ready clustering at any scale." Blog, Docker, November 03. Accessed 2018-10-05.
  12. MSV, Janakiram. 2016. "From Containers to Container Orchestration." The New Stack, May 11. Accessed 2018-07-04.
  13. Mell, Emily. 2018. "Dive into the decades-long history of container technology." Search IT Operations, TechTarget, June. Accessed 2018-10-05.
  14. Mesosphere. 2018. "A Short History of Container Orchestration." Mesosphere. Accessed 2018-10-05.
  15. MongoDB. 2018. "Containers and Orchestration Explained." MongoDB, July 04. Accessed 2018-07-04.
  16. Mónica, Diogo. 2017. "Least Privilege Container Orchestration." Docker Blog, October 11. Accessed 2018-07-05.
  17. Pott, Trevor. 2018. "Container orchestration top trumps: Let's just pretend you don't use Kubernetes already." The Register, March 13. Accessed 2018-07-05.
  18. Tozzi, Chris. 2017. "The Ultimate Guide to Container Orchestrators." Twistlock, May 22. Accessed 2018-10-05.
  19. Verloy, Filip. 2014. "Introduction to Apache Mesos and Mesosphere DCOS." May 12. Accessed 2018-10-05.
  20. Yegulalp, Serdar. 2018. "What is Kubernetes? Container orchestration explained." InfoWorld, April 04. Accessed 2018-07-04.

Further Reading

  1. Terkaly, Bruno. 2016. "Why Containers?" All Things Container, MSDN Blogs, Microsoft, October 14. Accessed 2018-10-05.
  2. Hecht, Lawrence. 2016. "TNS Research: The Present State of Container Orchestration." The New Stack, June 13. Accessed 2018-07-05.
  3. Tozzi, Chris. 2017. "The Ultimate Guide to Container Orchestrators." Twistlock, May 22. Accessed 2018-10-05.
  4. Revell, Matthew. 2016. "Introduction to Container Orchestration." DZone, August 01. Accessed 2018-07-04.

Article Stats

Author-wise Stats for Article Edits

Author
No. of Edits
No. of Chats
DevCoins
4
1
2270
4
1
1196
1
0
904
1
0
10
1049
Words
6
Likes
42K
Hits

Cite As

Devopedia. 2022. "Container Orchestration." Version 10, February 15. Accessed 2023-11-13. https://devopedia.org/container-orchestration
Contributed by
4 authors


Last updated on
2022-02-15 11:49:11

Improve this article

Article Warnings

  • Readability score of this article is below 50 (44.7). Use shorter sentences. Use simpler words.