Previous: OS-level Virtualization or Containerization, Up: Virtualization [Contents]
While containerization in its own is really useful and modernizes and makes more flexible the packaging and delivery of applications and programs of nearly any kind. But, in order to deploy them in an efficient way, it is needed another entity in our infrastructure: the orchestrator.
Container orchestration refers to the actions involved in controlling, managing, and coordinating containerized applications at scale, performing automated tasks such as deploying, modifying, or scaling different containers across multiple nodes or instances, what is called an orchestration cluster.
To do so, we have Kubernetes (k8s), which is a popular open-source container orchestration platform that provides a robust and resilient set of features to manage these applications effectively. At its heart, it lives the so called control plane, which consists of several components, running accross a single or multiple nodes, that are responsible for managing the cluster’s actual state and comparing it constantly and periodically to the desired state of the system. The key components of the control plane are:
In order to run the containerized applications, there also are the worker nodes, which are responsible for executing pods (i.e. the smallest and most basic unit of deployment, which encapsulates one or more containers, storage resources, and networking components). The key components of every worker node are:
Kubernetes supports horizontal scaling, allowing applications to scale based on demand, providing mechanisms like deployments, replica sets, and autoscaling based on metrics to ensure the desired number of pod replicas are running. When it comes to deploying Kubernetes clusters, there are different deployment options, including and on-premise model (setting up and managing the infrastructure in a private data center or physical servers owned by the organization), and cloud-based solutions (managed Kubernetes services like EKS [Amazon Elastic Kubernetes Service], AKS [Azure Kubernetes Service], GKE [Google Kubernetes Engine], etc.). While the on-premise model offers full control and customization, a cloud-based solution allows organizations to focus on their applications without the burden of heavy infrastructure maintenance.
Previous: OS-level Virtualization or Containerization, Up: Virtualization [Contents]