Elastic Kubernetes Service (EKS)
Get a working knowledge of how EKS and EKS distro in this lesson.
Kubernetes (K8s) is an open-source and extensible container orchestration platform. It automates the deployment, scaling, and management of containerized applications. Kubernetes allows the management and coordination of clusters of containers across multiple hosts, providing services such as fault tolerance and scalability. In this lesson, we will go over K8 and its major components and understand how EKS and EKS distro works.
K8s components
A Kubernetes deployment is called a Kubernetes cluster with two types of resources; control plane and nodes. Each cluster has a pool of worker nodes and they run the containerized applications on Pods, which represent one or more co-located containers. The control plane is used to make decisions about the cluster, scheduling, and managing nodes. Whereas nodes are sets of worker machines that are used to run containerized applications.
These nodes are managed by the control plane. The cluster would contain multiple worker nodes in a production environment, and the control plane would run across multiple machines, ensuring high availability and fault tolerance.
Control plane components
The main components of the control plane are discussed below:
etcd: This is the key-value storage for storing the Kubernetes cluster’s data, service discovery details, and API objects.
kube-scheduler schedules newly created Pods on a worker node.
kube-controller-manager runs controller processes such as the node controller for handling node failures and the job controller. There is a separate controller component for Cloud integration.
kube-apiserver: The Kubernetes API server is the primary management entity for the cluster, receiving all REST requests.
Node components
Every worker node in the Kubernetes cluster also runs some components, as shown in the illustration above. We have specified Docker as the container runtime; however, Kubernetes supports many other runtimes. A high-level overview of them is as follows:
Kubelet: An agent within the nodes to manages the containers in the Pod and ensures that they are running and healthy. Pods are the basic building blocks of Kubernetes. A Pod is the smallest deployable unit in Kubernetes and represents one or more co-located containers.
Kube-proxy: It allows network communication to the Pods from the internet or inside the cluster.
Now that we have revised Kubernetes, let’s look at the Kubernetes service provided by AWS.
Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Service (EKS) is a fully managed and certified service that simplifies managing Kubernetes clusters on AWS. EKS simplifies containerized applications’ deployment, management, and scaling using Kubernetes on AWS infrastructure. EKS offers different compute services, from serverless Fargate to EC2 to offer high availability, security, and seamless integration with other AWS services for enhanced development and operational efficiency.
EKS is versatile and adaptable to a wide range of use cases, offering developers and organizations the flexibility, scalability, and efficiency required to modernize their applications. EKS is well-suited for deploying web applications, including e-commerce platforms, content management systems, and media streaming services. It efficiently scales resources to handle fluctuating traffic loads while maintaining high availability and performance.
How EKS works
An EKS cluster consists of two major components: Control plane and Nodes. When provisioning an EKS cluster to run an application, the control plane is hosted on the AWS-managed VPC, whereas the worker nodes and other infrastructure are hosted in the customer-managed VPC. The worker nodes may communicate with the control plane through the managed API endpoint in the control plane. The worker nodes are connected to the control plane through the API or an EKS-managed ENI, placed in the customer subnets.
Example: Hosting a web application
Let’s look at an example to understand how EKS works in detail. For example, we want to host a highly available web application. The deployed EKS cluster’s control plane will be deployed in the AWS-managed cluster; the control plane will communicate with the worker nodes in the Customer-managed VPC through the EKS-managed ENI, assign tasks to the nodes, and maintain their health status. Nodes will not directly interact with the worker nodes; an application load balancer will forward the user requests to the nodes and serve the application.
EKS Distro
Amazon EKS Distro, an open-source distribution of Kubernetes provided by AWS. It offers the same core components that power Amazon Elastic Kubernetes Service (EKS) for creating and managing containerized applications. The difference between EKS and EKS-D is that the latter is available to install and manage locally. EKS-D can be used on-premises, in a cloud, or in any system. EKS-D provides a path to having essentially the same Amazon EKS Kubernetes distribution running wherever you need to run it.
EKS Distro automatically creates and manages Kubernetes clusters. It offers a consistent Kubernetes experience across AWS cloud and data centers. It alleviates the need to manually track, update, and determine Kubernetes compatibility across different teams. EKS distro also offers installable, reproducible Kubernetes builds for cluster creation as well as security patches even after the community support expires.
Get hands-on with 1300+ tech skills courses.