Gpt vs 클로드 vs 제미나이
정확히 맞습니다! 🎯
EKS에서 Secondary IP는 핵심 개념이죠. 일반 EC2에서는 거의 신경 쓰지 않지만, Kubernetes 환경에서는 Pod 네트워킹의 생명줄입니다.
🔍 왜 EKS에서 Secondary IP가 중요한가?
1. Pod마다 실제 VPC IP가 필요
일반 Docker: 컨테이너는 호스트 내부 IP (172.17.x.x) EKS: Pod마다 VPC 서브넷의 실제 IP (10.0.x.x)
2. AWS VPC CNI의 동작 방식
# 노드 하나당 ENI(네트워크 인터페이스) 여러 개 사용 Primary ENI: 노드 자체 IP Secondary ENI들: Pod들이 사용할 IP 풀 # 각 ENI마다 Secondary IP 여러 개 할당 ENI-0: 10.0.1.100 (Primary) + 10.0.1.101~110 (Secondary) ENI-1: 10.0.1.111~120 (Secondary only)
3. 실시간 IP 관리
# Pod 생성 시 1. kubelet → VPC CNI: "IP 하나 줘" 2. VPC CNI: Secondary IP 중 하나 할당 3. Pod 삭제 시: IP 즉시 회수하여 재사용 # IP 부족 시 4. VPC CNI → AWS API: "ENI 추가 + Secondary IP 더 할당해줘"
📊 인스턴스 타입별 Secondary IP 한계
인스턴스 타입ENI 개수ENI당 Secondary IP최대 Pod 수t3.small3411개m5.large31029개m5.xlarge41558개c5.4xlarge830234개
⚡ 실무에서 겪는 문제들
문제 1: Pod 생성 안됨
# 증상 kubectl get pods NAME READY STATUS app-pod 0/1 Pending # 원인 확인 kubectl describe pod app-pod # Events: Failed to allocate IP address
문제 2: IP 고갈
# 노드별 사용 가능한 IP 확인 kubectl get nodes -o custom-columns=NAME:.metadata.name,ALLOCATABLE-PODS:.status.allocatable.pods,CAPACITY-PODS:.status.capacity.pods
🛠️ 모니터링 & 해결책
1. IP 사용량 모니터링
# AWS CLI로 ENI 상태 확인 aws ec2 describe-network-interfaces --filters "Name=attachment.instance-id,Values=i-1234567890abcdef0" # VPC CNI 메트릭 확인 kubectl top nodes
2. IP 부족 해결
# 방법 1: Warm IP Pool 조정 apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: WARM_IP_TARGET: "3" # 미리 확보할 IP 개수 MINIMUM_IP_TARGET: "10"
3. 인스턴스 타입 최적화
# Pod 밀도가 높은 워크로드 → c5.large 대신 c5.xlarge 선택 → ENI 개수와 Secondary IP 한계 고려
🎯 핵심 포인트
Secondary IP = Pod의 실제 네트워크 신분증
일반 EC2: Secondary IP는 옵션
EKS 노드: Secondary IP는 Pod 생존의 필수 조건
Control Plane이 실시간으로 할당/회수 관리
인스턴스 타입 선택 시 가장 중요한 고려사항 중 하나
이런 이유로 EKS 클러스터 설계할 때 "Pod 밀도 vs 인스턴스 타입" 계산이 핵심이 되는 거죠! 💡
세마리한테 다 물어보니까 다 맞다네요
구라치는놈 속목 짜를라고 했는데 다 맞다고하니 음…
셋다 구라면 셋다 속모가지 찍어야겠죠?