AWS EKS
Kubernetes
Pod Limit
Node Configuration
Cloud Computing

Pod limit on Node - AWS EKS

System Design practice on Codemia

Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.

Practice system design

Understanding Pod Limits on an AWS EKS Node

Amazon Elastic Kubernetes Service (EKS) is a popular choice for orchestrating containerized applications using Kubernetes on AWS. One key aspect of managing EKS clusters is understanding the limit on the number of Pods that can be scheduled on a Kubernetes Node. This article delves into the technical aspects of Pod limits on EKS Nodes, explores various factors affecting these limits, and provides insights on optimizing your workloads.

Pod Limit Per Node

In Kubernetes, a cluster consists of Nodes, and Pods are the smallest deployable units that can be scheduled on these Nodes. AWS EKS, like other Kubernetes environments, has a specified limit for the number of Pods that can be run on each Node. This limit is not arbitrary but is determined by a combination of factors, including instance type, network interfaces, and the number of IP addresses available from those interfaces.

Understanding the Limitation Factors

  1. Instance Type: • Each AWS EC2 instance type supports a different number of elastic network interfaces (ENIs) and IP addresses per ENI, which directly impacts the Pod limit. • For example, a `t3.medium` EC2 instance supports 3 ENIs with a maximum of 6 IP addresses per ENI. Thus, it can handle up to 17 Pods: `1` (for the Node itself) + `16` (from the IP addresses provisioned for ENIs).
  2. Elastic Network Interfaces (ENIs) and IP Addresses: • ENIs provide the network interfaces within VPC, and each ENI can have multiple secondary IP addresses. Each secondary IP address can be used to allocate an IP to a Pod. • The Pod limit for each instance type is determined by the following formula:

Pod Limit=(ENI Count×IP per ENI)1\text{Pod Limit} = (\text{ENI Count} \times \text{IP per ENI}) - 1

• The `-1` is to reserve an IP address for the primary network interface of the Node.

  1. VPC CNI Plugin: • AWS uses the VPC CNI (Container Network Interface) plugin for networking in EKS. It's the component responsible for configuring network interfaces for pods. It's essential to configure this plugin properly as it governs the allocation of IP addresses to Pods.

Customization and Optimization

Custom Pod Networking: • In scenarios demanding more Pods than a single Node's capacity, custom Pod networking can be employed. Assigning multiple IPv6 CIDR blocks or dividing large IPv4 blocks among ENIs can be a feasible solution.

Cluster Scaling: • EKS supports automatic scaling of Nodes, enabling clusters to accommodate more Pods by adding new Nodes when existing ones reach their limit.

Checking Node and Pod Limits: • You can check the number of Pods a particular Node can handle using the command:

Node Selector and Affinity: Efficiently allocate Pods across Nodes by utilizing node selectors and affinity rules to enhance scheduling policies. • Networking Best Practices: Keep your networking architecture simple and adopt IP address management strategies to avoid IP exhaustion. • Cluster Autoscaler: Leverage Cluster Autoscaler to dynamically adjust the size of your cluster and ensure efficient resource utilization.


Related reading
Course
Beginner
27 lessons
10 hours
System Design Fundamentals

Build a strong foundation in designing scalable, reliable distributed systems.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

System Design practice on Codemia

Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.

Practice system design

All Rights Reserved.