Architecture of AWS EKS
Tags: aws, devops, eks
Published: 2023-12-12 08:49:10

![eks architecture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pvgq81l7fpfux92zvqv2.png)

Let's explore the underlying architecture of AWS Elastic Kubernetes Service (EKS) and its various components:

**1. Control Plane**:
![control plane](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8nadon9svpoyje24v59p.jpg)
The control plane in EKS is responsible for managing the Kubernetes cluster and its components. It includes the following key elements:

**a. API Server**: The API server is the central component of the control plane that exposes the Kubernetes API. It handles requests from users and other components, manages cluster state, and enforces policies.
**b. Scheduler**: The scheduler determines the optimal placement of pods onto worker nodes based on resource requirements, node availability, and other constraints. It distributes the workload across the cluster and maintains high availability.
**c. Controller Manager**: The controller manager runs various controllers that monitor the state of the cluster and perform actions to maintain the desired state. Examples include the node controller, which monitors the health of worker nodes, and the replication controller, which ensures the desired number of pod replicas are running.
**d. etcd**: EKS uses a managed version of etcd, a distributed key-value store, to store the cluster's state information. etcd stores configuration data, metadata, and other important information required for the functioning of the cluster.

**2. Worker Nodes**:
Worker nodes are the compute resources in EKS that run the containerized applications as Kubernetes pods. Key components of the worker nodes include:
**a. EC2 Instances**: EKS worker nodes are Amazon EC2 instances. You can choose the type, size, and configuration of EC2 instances that best suit your application needs. EKS provides an Amazon Machine Image (AMI) optimized for EKS that includes the necessary Kubernetes components.
**b. kubelet**: The kubelet is an agent that runs on each worker node and communicates with the control plane. It manages the pods and containers on the node, ensuring they are running and healthy based on the desired configuration.
**c. kube-proxy**: The kube-proxy is responsible for network proxying on behalf of the pods. It handles routing and load balancing of network traffic to the appropriate pods.

**3. Networking Components**:

![eks networking-b](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xf74v74mjtpmh3cwxdo0.png)

EKS leverages various networking components to enable communication between the control plane, worker nodes, and pods:
**a. VPC Networking**: EKS utilizes Amazon Virtual Private Cloud (VPC) to provide networking capabilities for the Kubernetes cluster. Each EKS cluster has its own VPC, allowing you to isolate and control network traffic.
**b. Subnets**: EKS uses subnets within the VPC to deploy worker nodes and distribute them across multiple Availability Zones (AZs) for high availability. Each subnet is associated with an AZ, and EKS automatically manages the placement of worker nodes across these subnets.

![eks networking-a](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2k8hcwrdfy4usod821gu.png)

**c. Security Groups**: Security Groups in the VPC control inbound and outbound traffic for the worker nodes and pods. You can define rules to specify what traffic is allowed or blocked.
**d. VPC CNI Plugin**: EKS employs the VPC Container Networking Interface (CNI) plugin to enable networking between pods. It assigns an IP address from the VPC subnet to each pod and handles network traffic routing.

**4. Integration with AWS Services**:

![how eks work](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y1cpp0j2vr9vip1y8bby.png)

EKS seamlessly integrates with various AWS services, allowing you to leverage their capabilities alongside your Kubernetes workloads. Some notable integrations include:
**a. Elastic Load Balancing (ELB)**: EKS integrates with ELB, enabling you to expose your applications to the internet or internal network via load balancers. ELB automatically distributes incoming traffic across multiple pods.
**b. AWS Identity and Access Management (IAM)**: EKS integrates with IAM to manage access controls and permissions for managing and interacting with the Kubernetes resources in EKS.
**c. Amazon RDS**: EKS can integrate with Amazon RDS (Relational Database Service) to provide managed relational databases for your applications. You can easily connect your applications running in EKS to RDS databases.
**d. Amazon S3**: EKS can interact with Amazon S3 (Simple Storage Service) for storing and accessing data. This integration allows you to leverage S3 for persistent storage needs of your applications.
**e. CloudWatch**: EKS integrates with Amazon CloudWatch to provide monitoring and logging capabilities. You can collect and analyze metrics, logs, and events from your EKS clusters using CloudWatch.

Overall, AWS EKS combines the power of Kubernetes with AWS infrastructure and services to provide a scalable, managed, and integrated platform for running containerized applications. The control plane, worker nodes, networking components, and integration with other AWS services work together to deliver a reliable and flexible Kubernetes experience.