지원 버전 : VPC CNI v1.19+, EKS 1.25+ 마지막 업데이트 : 2026년 2월 22일
Amazon VPC CNI(Container Network Interface)는 Amazon EKS의 기본 네트워킹 플러그인입니다. 각 Pod에 VPC 서브넷의 실제 IP 주소를 할당하여 Pod가 VPC 네트워크에서 네이티브하게 통신할 수 있도록 합니다.
네이티브 VPC 네트워킹 : Pod가 VPC의 실제 IP를 사용하여 오버레이 네트워크 없이 통신
AWS 서비스 통합 : Security Group, VPC Flow Logs, 라우팅 테이블 등 AWS 네트워킹 기능과 직접 통합
고성능 : 오버레이 오버헤드 없이 네이티브 네트워크 성능 제공
IPv4/IPv6 듀얼 스택 : IPv4 및 IPv6 네트워킹 모두 지원
VPC CNI는 두 가지 주요 구성 요소로 이루어져 있습니다:
spinner
IPAMD (L-IPAM Daemon) : 각 노드에서 실행되는 데몬으로, ENI와 IP 주소를 사전 할당하고 관리
CNI Binary : kubelet이 호출하는 CNI 플러그인으로, IPAMD에서 IP를 할당받아 Pod 네트워크 네임스페이스를 설정
VPC CNI는 두 가지 IP 할당 모드를 지원합니다:
특성
Secondary IP 모드
Prefix Delegation 모드
각 EC2 인스턴스는 하나 이상의 ENI(Elastic Network Interface)를 가질 수 있으며, 각 ENI는 여러 개의 프라이빗 IP 주소를 할당받을 수 있습니다.
인스턴스 유형별 ENI/IP 제한
인스턴스 유형
최대 ENI 수
ENI당 IPv4 수
최대 Pod 수
참고 : 최대 Pod 수 = (ENI 수 × ENI당 IP 수) - ENI 수. Primary IP는 노드에 사용됩니다.
Prefix Delegation (IPv4/IPv6)
Prefix Delegation 모드에서는 개별 IP 대신 /28 IPv4 접두사(16개 IP)를 ENI에 할당합니다:
Prefix Delegation의 이점:
더 높은 Pod 밀도 : /28 접두사당 16개 IP를 할당하여 노드당 Pod 수 대폭 증가
IP 할당 속도 향상 : 한 번의 API 호출로 16개 IP를 확보
Nitro 인스턴스 최적화 : Nitro 기반 인스턴스에서 최적의 성능
AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG
POD_SECURITY_GROUP_ENFORCING_MODE
Custom Networking (ENIConfig)
Custom Networking을 사용하면 Pod에 노드와 다른 서브넷의 IP를 할당할 수 있습니다:
WARM_IP_TARGET 튜닝
WARM_IP_TARGET은 노드에서 사전 할당하여 대기시킬 여유 IP 수를 제어합니다:
Secondary CIDR 추가
VPC의 기본 CIDR이 부족한 경우 Secondary CIDR을 추가할 수 있습니다:
Network Policy 지원
VPC CNI 네이티브 Network Policy (v1.14+)
VPC CNI v1.14부터 eBPF 기반의 네이티브 Network Policy를 지원합니다:
Network Policy 예시
Network Policy 확인
Pod별 Security Group
개별 Pod에 AWS Security Group을 직접 할당할 수 있습니다:
Trunk ENI / Branch ENI
Pod별 Security Group은 Trunk ENI와 Branch ENI 아키텍처를 사용합니다:
Trunk ENI : 노드의 메인 ENI로 Branch ENI를 수용
Branch ENI : 각 Pod에 할당되는 가상 ENI로 독립적인 Security Group 적용
VPC CNI를 기본 CNI로 사용하면서 Multus를 통해 추가 네트워크 인터페이스를 구성할 수 있습니다:
VPC CNI는 Windows 노드에서도 사용 가능합니다:
증상 : Pod가 Pending 상태에서 머무르며 IP 할당 실패
해결 방법 :
Prefix Delegation 활성화로 Pod 밀도 증가
Secondary CIDR 추가로 IP 풀 확장
Custom Networking으로 전용 Pod 서브넷 사용
WARM_IP_TARGET 조정으로 IP 사전 할당 최적화
증상 : ENI limit reached 오류
InsufficientFreeAddressesInSubnet
Secondary CIDR 추가 또는 Prefix Delegation 활성화
SecurityGroupLimitExceeded
Timeout waiting for pod IP
충분한 서브넷 크기 확보 : /19 이상의 서브넷 사용 권장
AZ별 서브넷 분리 : 각 가용 영역에 별도의 Pod 서브넷 할당
100.64.0.0/10 대역 활용 : RFC 6598 주소 공간을 Pod용으로 사용
Prefix Delegation 권장 설정
Prefix Delegation 필수 : 대규모 환경에서 IP 효율성 극대화
Custom Networking 사용 : 노드와 Pod에 별도의 서브넷 할당
WARM_IP_TARGET 조정 : Pod 스케줄링 지연 최소화
모니터링 설정 : IP 사용률 모니터링 및 알림 구성
이 장에서 배운 내용을 테스트하려면 VPC CNI 퀴즈 를 풀어보세요.