서브넷 여유 IP·ENI·Prefix Delegation 점검하기
Pod 이벤트에서 실패 단계를 구분한 뒤 실제 Pod 서브넷, 노드 한도, Prefix 공간과 CNI 권한을 확인하세요.
EKS Pod IP 할당 실패를 Pod 이벤트부터 서브넷 여유 IP, ENI 한도, Prefix Delegation 순서로 점검합니다. InsufficientCidrBlocks, Warm Pool, CNI 권한 오류를 구분하는 조회 명령과 진단표를 확인하세요.
Pod IP 할당 실패인지 먼저 확인하기
EKS에서 Pod가 생성되지 않는다면 먼저 노드에 배치됐는지 확인하세요. 배치 전 FailedScheduling과 배치 후 네트워크 준비 실패는 진단 대상이 다릅니다. IP 할당 관련 메시지가 확인되면 실제 Pod용 서브넷의 주소, 노드 한도, Prefix 공간, CNI의 AWS API 호출 상태를 순서대로 좁혀갑니다.
이 글은 Amazon VPC CNI를 사용하는 일반 EKS EC2 Linux·IPv4 환경을 대상으로 합니다. Fargate, Auto Mode, Windows, IPv6 및 Calico 네트워킹 교체 환경에는 아래 명령과 판단을 그대로 적용하지 않습니다. Security Groups for Pods와 다중 인터페이스 사용 시에는 추가 인터페이스 구조도 확인해야 합니다.
ContainerCreating은 kubectl이 보여주는 상태이며 이것만으로 IP 부족을 뜻하지 않습니다. FailedCreatePodSandBox도 여러 원인으로 발생하므로 이벤트 본문에서 IP 할당 관련 오류를 확인해야 합니다. Kubernetes Pod 상태와 이벤트 진단
공식 문서 확인일은 2026년 9월 9일입니다. 아래는 Bash 계열 셸에서 사용하는 진단용 조회 명령 예시입니다. kubectl context와 AWS CLI 계정·리전을 먼저 맞추고 읽기 권한을 준비하세요. YOUR_로 시작하는 값은 자신의 확인 대상 값으로 교체합니다. PowerShell에서는 특히 JSONPath 인용부호 처리를 사용하는 버전에 맞춰 조정해야 합니다.
| 관찰 | 확인 대상 |
|---|---|
| 노드 미배치 + FailedScheduling | 자원·taint·Pod 수 제한 |
| 노드 배치 + IP 할당 오류 | 해당 노드 CNI와 Pod 서브넷 |
| IP 존재 + 통신 실패 | DNS·경로·정책·보안 그룹 |
VPC CNI가 Pod IP를 할당하는 구조
기본 VPC CNI 구성에서는 노드에 연결한 ENI의 VPC 주소를 Pod에 사용합니다. 개별 보조 IP 모드와 Prefix 모드는 주소를 확보하는 단위가 다릅니다.
서브넷 주소 공간 → 노드 ENI → 개별 보조 IP 또는 Prefix → Pod IP. 이 흐름에서 ipamd가 주소 풀을 관리합니다. 이 구조는 기본 단일 인터페이스 구성의 이해를 위한 요약입니다. Amazon VPC CNI 주소 관리
서브넷이 충분해도 노드 한도에 걸릴 수 있고, Prefix 공간이 있어도 API 호출이 실패할 수 있습니다. 어느 단계가 막혔는지 나누어야 같은 Pending 상태에서도 맞는 조치를 선택할 수 있습니다.
첫 점검: 해당 노드의 aws-node와 로그 확인
문제 Pod의 NODE 값을 확인한 뒤 같은 노드에서 실행되는 aws-node를 찾습니다. 클러스터 전체 로그보다 장애 노드와 발생 시점을 맞추어 확인하세요. YOUR_AWS_NODE_POD는 첫 조회 결과의 Pod 이름으로 교체합니다.
describe 결과에서 이미지 버전, Ready 상태, 재시작과 환경변수를 확인합니다. --previous는 컨테이너가 재시작했고 이전 로그가 남아 있을 때만 사용할 수 있습니다.
kubectl logs에 IPAM 로그가 모두 나오는 것은 아닙니다. AWS_VPC_K8S_CNI_LOG_FILE이 파일 출력이면 설정된 수집 경로나 노드의 /var/log/aws-routed-eni/ipamd.log를 확인하세요. 컨테이너 내부 기본 경로는 /host/var/log/aws-routed-eni/ipamd.log입니다. IPAM 로그 저장 위치
조회 결과를 공유할 때는 계정·리소스 식별자를 제거하세요. 이 글은 실제 운영 로그를 사용하지 않습니다.
서브넷에 사용할 IP가 충분한가?
노드의 providerID에서 EC2 인스턴스를 식별하고 연결 ENI의 서브넷을 조회하세요. custom networking을 사용하면 Pod용 ENI가 노드의 기본 서브넷과 다른 서브넷에 있을 수 있습니다.
custom networking은 ENIConfig로 Pod용 서브넷 등을 지정합니다. 기능이 켜져 있다면 ENIConfig와 노드의 연결 설정도 대조하세요. ENIConfig 리소스 종류를 찾지 못하면 기능 사용 여부부터 확인합니다. Pod용 서브넷 선택
AvailableIpAddressCount는 사용할 수 있는 IPv4 주소 개수이며 연속된 /28 블록 수가 아닙니다. ENI나 Prefix로 이미 확보한 주소는 Pod에 배정하기 전이어도 서브넷의 가용 주소와 별도로 봐야 합니다. 서브넷 조회 필드
ENI 결과의 Subnet을 YOUR_SUBNET_ID로 넣어 각각 조회합니다. Prefix 목록과 개별 IP 배열도 구분하세요. ENI 조회 필터와 Prefix 필드
ENI·주소 한도와 maxPods 구분하기
Too many pods가 나오면 스케줄러가 보는 Pod 수 한도를 확인합니다. 반면 노드 배치 후 IP 할당 실패는 주소 확보 경로를 확인해야 합니다. CPU·메모리 부족으로 인한 배치 실패도 별도 원인입니다.
YOUR_INSTANCE_TYPE은 노드 조회 결과의 유형으로 교체하세요. AWS 조회는 유형의 기본 네트워크 한도를 보여줍니다. 실제 ENI와 Prefix는 앞 절 결과와 대조합니다. PrivateIpAddresses 배열 길이가 Prefix 안의 모든 Pod 주소를 포함한다고 가정하면 안 됩니다.
Prefix 모드는 주소 슬롯 사용 방식을 바꾸며 ENI 최대 수 자체를 늘리지는 않습니다. 관리형 노드 그룹의 AMI 지정 여부 등에 따라 maxPods 설정 방법이 다릅니다. 임의로 숫자만 높이지 말고 allocatable 값과 지원 조건을 확인하세요. Prefix와 최대 Pod 수 설정
노드 추가는 서브넷에 충분한 주소가 있는지 확인한 뒤 선택해야 합니다. 주소가 부족한 같은 서브넷에 노드를 더 만들면 해결이 되지 않을 수 있습니다.
Prefix Delegation을 켰는데도 실패하는 이유
IPv4 Prefix 할당에는 연속된 /28 공간이 필요합니다. 가상의 서브넷에 40개 여유 IP가 있어도 주소가 흩어져 있다면 필요한 블록을 확보하지 못할 수 있습니다. 이 숫자는 원리를 설명하기 위한 가정입니다.
InsufficientCidrBlocks가 보이면 연속 공간 부족을 검토하세요. 새 서브넷이나 Prefix용 CIDR 예약이 선택지입니다. 예약은 기존 사용 중 주소를 즉시 이동시켜 빈 블록을 만드는 기능은 아닙니다. Prefix 전제와 주소 단편화
Linux IPv4 Prefix는 VPC CNI 1.9.0 이상, Nitro 기반 노드 등의 조건을 확인해야 합니다. 최소 기능 버전이 현재 클러스터의 권장 버전을 의미하지는 않습니다. ENABLE_PREFIX_DELEGATION 설정과 실제 노드 조건을 함께 확인하세요.
아래 set env 명령은 --list를 붙인 조회입니다. 값 할당을 추가하지 말고 조회용으로 사용하세요. 실제 Pod 환경변수는 describe pod 결과와도 비교합니다.
Warm Pool 설정이 IP 사용량에 미치는 영향
CNI는 새 Pod를 위해 여유 주소를 준비하므로 실행 중 Pod 수와 확보 주소 수가 다를 수 있습니다. 노드당 평상시 Pod 수와 한 번에 늘어나는 Pod 수를 함께 보고 조정하는 것이 좋습니다.
Prefix 모드에서는 WARM_IP_TARGET 또는 MINIMUM_IP_TARGET을 지정하면 WARM_PREFIX_TARGET보다 우선합니다. 확보 단위 때문에 실제 여유 주소가 IP 목표와 딱 맞지는 않을 수 있습니다. Prefix Warm Pool 설정
MINIMUM_IP_TARGET은 전체 확보 주소의 하한입니다. 이를 지정하고 WARM_IP_TARGET을 생략하면 추가 할당에 영향을 줄 수 있으므로 버전별 안내를 확인하세요. 최소 확보 주소 설정
큰 여유 값은 서브넷 소모를 늘리고 너무 작은 값은 급격한 확장 때 추가 요청을 늘릴 수 있습니다. 정답 숫자를 고정하기보다 실제 Pod 증가량과 API 오류·주소 사용량으로 판단하세요.
| 설정 | 의미 |
|---|---|
| WARM_PREFIX_TARGET | 미사용 Prefix 여유 목표 |
| WARM_IP_TARGET | 즉시 배정 가능한 여유 IP 목표 |
| MINIMUM_IP_TARGET | 전체 확보 IP의 하한 목표 |
IP 여유가 있어도 실패할 때: 권한·API·CNI 상태
같은 시각의 CNI 로그에서 UnauthorizedOperation·AccessDenied는 권한 경로, throttling·RequestLimitExceeded는 호출 제한, timeout은 DNS·연결 경로 등을 점검하는 단서입니다. 한 줄만으로 원인을 확정하지는 않습니다.
CNI의 IAM 역할은 애플리케이션이나 조회 명령 실행자의 역할과 다를 수 있습니다. IRSA·Pod Identity·노드 역할 중 실제 사용 방식을 확인하세요. 관리형 Add-on이 없다는 조회 오류가 나더라도 자체 관리 방식의 aws-node가 설치되어 있을 수 있습니다.
인터넷 접근을 제한한 환경에서는 EC2 API를 위한 Endpoint·보안 그룹·DNS를 확인합니다. 자격증명 방식에 따라 STS 또는 EKS Auth 접근도 필요할 수 있습니다. Private EKS 서비스별 Endpoint
aws-node 자체가 Ready가 아니면 이미지 다운로드·초기화 이벤트부터 확인하세요. 주소가 충분해도 CNI가 정상 기동하지 않으면 주소 할당이 진행되지 않을 수 있습니다.
Pod Identity 연결 목록에는 실제 IAM 역할이 생략됩니다. 연결이 있으면 associationId를 YOUR_ASSOCIATION_ID로 바꿔 상세 조회하세요. Pod Identity 연결 조회의 반환 범위
증상별 진단표와 조치 선택
아래 표는 관찰값을 연결하는 진단 제안입니다. 변경 전 오류 시각, 노드·서브넷, CNI 설정과 한도를 기록하세요. 재시작만으로 주소 고갈·단편화·권한 부족이 해결된다고 가정하지 마세요.
Prefix 전환은 새 노드 그룹을 준비해 검증하는 방안을 비교하세요. AWS도 새 노드 그룹과 기존 워크로드의 안전한 이동을 권장합니다. Prefix 전환 시 노드 교체
변경 후 새 Pod가 IP를 받고 Ready가 되는지 확인합니다. 이어서 필요한 DNS·서비스·외부 연결을 점검하세요. IP 확보와 애플리케이션 통신은 별도의 완료 조건입니다.
| 증상 | 다음 확인 | 조치 방향 |
|---|---|---|
| FailedScheduling / Too many pods | allocatable·배치된 Pod 수 | 노드 용량·maxPods 설계 |
| Pod용 서브넷 가용 IP 부족 | 실제 ENI 서브넷·여유 풀 | 주소 공간·Pod 배치 검토 |
| InsufficientCidrBlocks | 연속 /28 공간·예약 | 새 서브넷·Prefix 공간 계획 |
| 노드 ENI·주소 한도 도달 | 유형 한도·실제 확보 상태 | Prefix·노드 설계 검토 |
| UnauthorizedOperation / AccessDenied | CNI 역할·실패 API | 필요한 권한 확인·수정 |
| API 제한·timeout | 호출량·Endpoint·DNS | 호출·연결 원인 해소 |
| IP 확보 후 통신 실패 | DNS·경로·정책 | 통신 진단으로 전환 |
재발 방지와 다른 네트워크 구성의 검토 시점
서브넷별 가용 주소, 노드별 Pod 증가량, CNI 주소 할당 오류를 같은 시간축으로 보세요. 총 여유 IP 알람만으로 단편화를 탐지할 수 없으므로 Prefix 할당 오류도 함께 관찰하는 것을 권합니다.
여유 기준에는 배포 시 추가 복제본, 노드 교체와 자동 확장의 동시 용량을 포함하세요. 피크 수치를 확인하지 않고 절감률이나 권장 여유량을 고정하지 않는 것이 좋습니다.
IPv4 주소 계획 자체가 제약이라면 custom networking과 IPv6를 비교할 수 있습니다. CNI 교체 전에 기존 구성의 주소 설계 대안을 검토하세요. 주소 부족 시 custom networking 검토
Calico 정책만 추가하면 Pod 주소 할당 방식은 바뀌지 않습니다. 최근 Calico 도입 판단 글이 도구 선택을 다룬다면, 이번 글은 VPC CNI를 유지한 상태에서 장애 원인을 좁히는 데 집중합니다.
핵심 요약
FAQ
Pending이면 서브넷 IP 부족인가요?
아닙니다. 노드 배치 여부와 이벤트를 먼저 확인해야 합니다. 자원, taint, Pod 수 제한 또는 배치 후 초기화 문제일 수 있습니다.
Prefix Delegation을 켜면 서브넷 주소가 늘어나나요?
아닙니다. ENI에 주소를 확보하는 단위가 바뀝니다. 주소 공간을 늘리려면 별도 서브넷·CIDR 등 주소 설계가 필요합니다.
여유 IP가 많은데 InsufficientCidrBlocks가 나오는 이유는 무엇인가요?
IPv4 Prefix에 필요한 연속된 /28 공간이 없을 수 있습니다. 가용 주소 개수와 주소 블록의 연속성을 구분하세요.
aws-node 로그가 조용하면 CNI는 정상인가요?
그렇게 단정할 수 없습니다. IPAM 로그의 저장 위치를 확인하세요. 파일 출력으로 설정되어 있으면 kubectl logs에 해당 내용이 나오지 않을 수 있습니다.
Pod 이벤트에서 시작해 실제 Pod용 서브넷과 노드의 주소 확보 상태로 원인을 좁혀가세요. Prefix 공간과 권한·API 문제까지 확인하면 불필요한 CNI 교체나 노드 추가를 줄일 수 있습니다. 변경은 관찰한 원인에 맞춰 선택하고 새 Pod의 IP 확보와 통신까지 확인하세요.

'AWS Guides' 카테고리의 다른 글
| EKS에서 Calico가 필요한 경우: VPC CNI 정책 기능과 CNI 교체 판단 기준 (0) | 2026.09.09 |
|---|---|
| AWS LiteLLM과 Amazon Bedrock 연동 구조: IAM 인증·배포·비용 관리 (0) | 2026.09.06 |
| AWS Network Firewall 구성 방식 총정리 단일 NFW 중앙 Inspection VPC 이중 방화벽 설계 비교 (0) | 2026.09.03 |
| AWS Control Tower 설계 기준 정리: Landing Zone, OU 구조, Control 정책, 초기 배포 방식 (0) | 2026.09.03 |
| EKS에서 mTLS를 적용하는 방식: Service Mesh와 Gateway 기준 (0) | 2026.09.03 |








