As many containers enter production there is a need to manage containers. While smaller container implementations could use a combination of customized tools or use shell scripts to manage the containers, manual intervention needed is high. Containerization platforms have introduced “orchestration tools” that help in managing or as referred by industry ‘orchestrate containers’. As organizations deploy and manage thousands of containers, container orchestration tools help deploy, manage and network containers.
Through container orchestration the lifecycle of containers in the operating environment is managed.
Kubernetes which was created by Google and now maintained by Cloud Native Computing Foundation has become the default orchestration system that is used across platforms. Kubernetes is a platform for automating deployment, scaling, and managing operations of containers across compute environments and hosts. Platforms have built additional capabilities with Kubernetes as the base. Some examples of orchestration tools and their variations follow:
Container orchestration tools, such as Kubernetes, are updated with information on where container images are, where the logs need to be stored, how to establish connectivity/network, processor/CPU limits, metadata, user-defined labels, and memory availability. This is done through a configuration file which is either a YAML or JSON file.
The orchestration tool deploys the container to the right cluster host and manages the container lifecycle – based on information about requirements and restrictions in the configuration file. Orchestration tools have the feature of managing version control for the configuration files, allowing the container/application/microservice to be deployed in multiple environments – development, test and production.
Cluster components in an orchestration tool/platform include control planes, nodes (or worker). The worker node(s) host the Pods (a set of running containerized applications) that are the components of a larger total solution/application. The control plane (The orchestration layer that exposes the API and interfaces to define, deploy, and manage the lifecycle of containers.) manages the worker nodes and the Pods in the cluster. In production environments, the control plane would normally run across multiple computers and a cluster usually runs multiple nodes, leading to high availability and fault-resilience.
Container orchestration is the use of tools to automate the deployment, management and networking of containers. Orchestration focuses on three core areas in automating container management – Service Management (configuration, provisioning, availability, security, health monitoring), Scheduling (scaling, start, stop) and Resource Management (load balancing, resource allocation).