반응형
AWS Elastic Kubernetes Service (EKS)에서 ENI (Elastic Network Interface)와 Max Pods는 클러스터에서 워커 노드가 처리할 수 있는 네트워크 리소스와 관련된 중요한 개념입니다. 이를 이해하려면 ENI와 Max Pods의 관계를 먼저 알아야 합니다.
1. ENI (Elastic Network Interface)
ENI는 AWS EC2 인스턴스의 네트워크 연결을 담당하는 가상 네트워크 어댑터입니다.
- 하나의 EC2 인스턴스는 여러 ENI를 가질 수 있으며, 각 ENI에는 여러 IP 주소를 할당할 수 있습니다.
- Kubernetes Pod는 ENI에서 제공되는 IP 주소를 사용하여 네트워크에 연결됩니다.
ENI가 중요한 이유:
- Kubernetes에서는 각 Pod가 고유한 IP 주소를 가지므로 ENI의 IP 주소 용량이 Pod의 최대 수를 제한합니다.
2. Max Pods란?
Max Pods는 EKS 워커 노드에서 실행할 수 있는 최대 Pod 수를 의미합니다. 이는 노드가 사용할 수 있는 ENI와 IP 주소에 따라 결정됩니다.
Max Pods 계산 방식:
- EC2 인스턴스 유형에 따라 ENI 개수:
EC2 인스턴스마다 지원하는 최대 ENI 개수가 다릅니다. - ENI당 할당 가능한 IP 주소:
ENI당 최대 IP 주소 수도 EC2 인스턴스 유형에 따라 다릅니다. - Pod를 위한 사용 가능한 IP 주소:
- 각 ENI에서 하나의 IP 주소는 호스트 노드가 사용합니다.
- 나머지 IP 주소는 Pod에 할당됩니다.
- 최대 Pod 수 공식:
여기서 -1은 노드 자체에서 사용하는 IP 주소를 제외하기 위함입니다.Max Pods = (ENI 개수 × ENI당 IP 주소) - 1
3. EC2 인스턴스 유형별 ENI 및 Max Pods 예시
다음은 일반적으로 사용되는 EC2 인스턴스 유형에서 ENI와 Max Pods 값을 보여줍니다:
EC2 인스턴스 유형ENI 개수ENI당 IP 주소Max Pods
t3.medium | 3 | 6 | 17 |
m5.large | 3 | 10 | 29 |
c5.2xlarge | 4 | 15 | 58 |
r5.4xlarge | 8 | 30 | 239 |
- 참고: AWS 공식 ENI 및 IP 주소 제한 문서를 확인하여 더 많은 유형을 확인할 수 있습니다.
4. EKS에서 Max Pods 설정
노드 그룹 생성 시:
EKS는 워커 노드를 생성할 때 인스턴스 유형에 따라 Max Pods를 자동으로 설정합니다. 이 값은 --use-max-pods 옵션으로 관리됩니다.
Max Pods 확인:
노드의 kubelet 설정에서 --max-pods 값을 확인할 수 있습니다.
cat /etc/eks/eni-max-pods.txt
사용자 정의 Max Pods:
eksctl 또는 사용자 지정 Launch Template을 사용해 maxPods 값을 직접 설정할 수 있습니다.
5. 문제 발생 및 해결 방안
문제: Pod IP 부족
- 클러스터에서 IP 주소가 부족하면 Pod이 스케줄링되지 않습니다.
해결 방안:
- EC2 인스턴스 유형 업그레이드:
ENI와 IP 주소 제한이 더 높은 인스턴스로 변경. - VPC CNI 플러그인 튜닝:
Amazon VPC CNI 플러그인의 설정을 조정해 IP 주소를 효율적으로 할당. - 탄력적 Pod CIDR 설정:
Pod 네트워크 범위를 확장하여 더 많은 IP 주소를 사용할 수 있도록 설정.
6. 참고 링크
이 정보를 통해 EKS에서 ENI와 Max Pods 설정을 최적화하여 안정적인 클러스터 운영이 가능합니다.
반응형