Amazon EKS에서 Pod에 IP를 할당하는 방식은 **네트워크 인터페이스(ENI)**를 활용하여 이루어집니다. 하지만 각 노드별로 사용할 수 있는 IP 개수가 제한되어 있어, IP가 부족할 경우 Pod 생성이 불가능해질 수 있습니다. 이러한 문제를 미리 검토하고 예상되는 Pod 개수를 파악하여 적절한 EC2 노드 타입을 선택하는 것이 중요합니다.
노드별 IP 제한
- 30 vCPU 미만의 인스턴스는 Pod 개수가 110개로 제한됩니다.
- 30 vCPU 이상의 인스턴스는 250개로 제한됩니다.
할당 가능한 IP 개수가 Pod 제한 수보다 높더라도, Pod는 제한 개수 이상으로 생성되지 않습니다.
세컨더리 IP 할당 방식에서는 Pod가 생성될 서브넷 대역에서 할당할 수 있는 IP 개수만큼 Pod가 생성됩니다. 이 방식은 설정이 간단하고 직관적이며, VPC 서브넷에서 자동으로 IP를 할당받기 때문에 별도의 복잡한 설정이 필요하지 않습니다.
EKS 규모가 커져서 많은 Pod가 생성되어야 할 경우, IP 부족 현상이 발생할 수 있습니다. 이럴 때 **접두사 할당 방식(Prefix Delegation)**을 적용하면 IP 부족 문제를 해결할 수 있습니다.
두 가지 방식 비교
<이미지 출처 : https://docs.aws.amazon.com/ko_kr/eks/latest/best-practices/prefix-mode-linux.html>
1. 세컨더리 IP 할당 방식 (Secondary IP-based allocation)
세컨더리 IP 할당 방식은 지정된 VPC 서브넷의 ENI에 여러 개의 보조 IP를 할당하여 Pod에 할당하는 방식입니다. 이 방식은 속도가 빠르고 설정이 간단하지만, 대규모 클러스터에서는 IP 자원의 소모가 빠르게 이루어질 수 있습니다.
장점:
- 간단하고 직관적: 설정이 단순하며, 기본적인 IP 할당 방식입니다.
- IP 주소 관리 용이: VPC 서브넷 내에서 IP를 할당받기 때문에 관리가 직관적입니다.
- VPC 서브넷과의 연관: Pod의 IP가 VPC 서브넷 내에 있어 네트워크 구조가 명확합니다.
단점:
- IP 자원의 소모: 각 Pod가 VPC 서브넷의 IP를 소모하므로, 많은 Pod를 배포할 경우 IP 부족 현상이 발생할 수 있습니다.
- 확장성 부족: 대규모 클러스터에서 VPC CIDR의 크기 제한으로 서브넷 IP가 부족할 수 있습니다.
- VPC 서브넷 크기 의존: 서브넷의 크기에 의존하므로 VPC CIDR 범위가 좁으면 많은 Pod를 배포할 수 없습니다.
세컨더리 IP 할당 방식은 ENI에 미리 여러 개의 보조 IP를 할당하여 Pod가 이 IP를 사용할 수 있게 하는 방식입니다. 이 방식은 IP 할당 속도가 향상되며, IP 수가 제한되어 있지만 적절한 설정을 통해 Pod 생성이 가능합니다.
예시:
- EC2 타입: c5.2xlarge
- ENI 개수: 4
- ENI당 할당 가능한 IPv4 개수: 15개
전체 할당 가능한 IP 개수:
(ENI 개수 × ENI당 할당 가능한 IP 개수) – 1 (Primary IP) = 할당 가능한 최대 Pod 개수
4 × (15 – 1) = 59개 Pod
2. 접두사 할당 방식 (Prefix Delegation, /28 Subnet Allocation)
접두사 할당 방식은 Amazon VPC CNI v1.9 이상에서 지원되며, ENI에 /28 서브넷(16개의 IP)을 한 번에 할당하여 사용하는 방식입니다. 이 방식은 세컨더리 IP 할당 방식보다 더 많은 IP를 효율적으로 사용할 수 있으며, 대규모 클러스터에 적합합니다.
장점:
- IP 효율성: VPC 서브넷의 IP를 소모하지 않고, ENI 1개당 16개의 IP를 사용하여 IP 자원 소모가 효율적입니다.
- 확장성: Pod CIDR을 별도로 지정하거나 VPC 외부 IP 대역을 사용할 수 있어, 대규모 클러스터에서 IP 부족 문제를 해결할 수 있습니다.
- 독립성: VPC 서브넷과 독립적으로 IP를 관리할 수 있어, 서브넷의 크기나 IP 범위에 제약을 받지 않습니다.
단점:
- 설정 복잡성: Prefix Delegation을 활성화하려면 추가적인 설정이 필요하며, Pod CIDR을 별도로 관리해야 합니다.
- 네트워크 복잡성: IP 할당이 서브넷과 독립적으로 관리되므로, 네트워크 트래픽 모니터링이나 트러블슈팅 시 복잡한 구성이 될 수 있습니다.
Prefix Delegation은 ENI에 /28 서브넷(16개의 IP)을 할당하여 사용하는 방식으로, 대규모 클러스터에서 IP 부족 문제를 해결하는 데 효과적입니다. ENI에 할당된 16개 IP는 각 Pod에 할당될 수 있습니다.
예시:
- EC2 타입: c5.2xlarge
- ENI 개수: 4
- ENI당 할당 가능한 Secondary IP 수: 15개
- 각 Secondary IP는 /28 프리픽스를 사용하여 16개의 IP를 제공합니다.
전체 할당 가능한 IP 개수:
4 × ((15 – 1) × 16) = 896개 Pod