Pod에게 고유한 IP를 할당하고, 중복 없이 관리하는 시스템
| 역할 | 담당 주체 |
|---|---|
| IP 할당 | CNI Plugin |
| 중복 방지 | CNI Plugin 책임 |
| 서브넷 관리 | CNI Plugin 내부에서 처리 |
→ Kubernetes 자체는 IP 관리하지 않음
→ CNI 플러그인이 전적으로 담당
{
"ipam": {
"type": "host-local",
"subnet": "10.244.0.0/16",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
| 항목 | 의미 |
|---|---|
type | IPAM 방식 (host-local 또는 dhcp) |
subnet | Pod에 할당할 네트워크 대역 |
routes | 라우팅 설정 |
/var/lib/cni/networks/<network-name>/에 IP 상태 저장ls /var/lib/cni/networks/mynet
10.244.0.2
10.244.0.3
→ 파일명 = 할당된 IP
10.32.0.0/1210.32.0.1 ~ 10.47.255.254kubectl apply -f \
"https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml" \
--set IPALLOC_RANGE=10.50.0.0/16
→ IPALLOC_RANGE 옵션으로 대역 변경 가능
| CNI | IPAM 방식 | 특징 |
|---|---|---|
| Weave | 분산형 | Peer 간 IP 풀 분산 |
| Flannel | Host-local + Etcd | Etcd 기반 중앙집중형 |
| Calico | IPAM + BGP | 네이티브 L3 라우팅 지원 |
| Cilium | IPAM + eBPF | 커널 최적화, 높은 확장성 |
노드 장애 시:
Weave는 자동으로 IP 풀 재분배
IP 충돌:
Peer 간의 Gossip Protocol로 지속적인 상태 동기화 → 충돌 방지
대역 부족:
초기 서브넷 설정이 작으면 Pod 스케일 아웃 시 문제 발생 → IPALLOC_RANGE 재설정 필요
Kubernetes는 IPAM을 직접 관리하지 않음
→ CNI가 100% 책임
Weave는 자동, 분산형 IP 관리 제공
→ 소규모/중규모 클러스터에 강력
대규모 환경에서는 Calico나 Cilium이 더 효율적일 수 있음