IPAM(IP Address Management) - CNI

Yu Sang Min·2025년 6월 26일

CKA

목록 보기
81/110

🌐 Kubernetes IP Address Management (IPAM) 완벽 이해


🚩 IPAM이란 무엇인가?

Pod에게 고유한 IP를 할당하고, 중복 없이 관리하는 시스템

  • 노드(Node)의 물리적 IP는 IPAM 대상 아님
  • Pod 내부 네트워크의 가상 IP 관리가 목적

🧠 IPAM의 주체는?

역할담당 주체
IP 할당CNI Plugin
중복 방지CNI Plugin 책임
서브넷 관리CNI Plugin 내부에서 처리

→ Kubernetes 자체는 IP 관리하지 않음
CNI 플러그인이 전적으로 담당


🔗 CNI IPAM 동작 방식

✅ CNI 구성 파일 내 IPAM 섹션

{
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.0.0/16",
    "routes": [
      { "dst": "0.0.0.0/0" }
    ]
  }
}
항목의미
typeIPAM 방식 (host-local 또는 dhcp)
subnetPod에 할당할 네트워크 대역
routes라우팅 설정

✅ Host-local 방식

  • 각 Node에서 로컬 파일 시스템으로 IP 관리
  • /var/lib/cni/networks/<network-name>/에 IP 상태 저장
ls /var/lib/cni/networks/mynet
10.244.0.2
10.244.0.3

→ 파일명 = 할당된 IP


🏗️ Weave IPAM 동작 방식

🔥 특징

  • 분산형 IPAM
  • 노드 간 자동으로 IP 풀을 나누어 관리

🗺️ 기본 서브넷

  • 10.32.0.0/12
    → IP 범위: 10.32.0.1 ~ 10.47.255.254
    → 약 104만 개의 IP 사용 가능

🧠 작동 원리

  1. 클러스터 전체에 대해 하나의 대역으로 관리
  2. Weave Peer 간에 실시간으로 통신하여 IP 풀을 분산
  3. 각 Node는 자신의 IP 풀에서 Pod에 할당
  4. 중복 방지: Peer 간에 지속적으로 IP 사용 상태 동기화

⚙️ 설정 커스터마이징 가능

kubectl 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들과 비교

CNIIPAM 방식특징
Weave분산형Peer 간 IP 풀 분산
FlannelHost-local + EtcdEtcd 기반 중앙집중형
CalicoIPAM + BGP네이티브 L3 라우팅 지원
CiliumIPAM + eBPF커널 최적화, 높은 확장성

🔍 문제 발생 포인트

  • 노드 장애 시:
    Weave는 자동으로 IP 풀 재분배

  • IP 충돌:
    Peer 간의 Gossip Protocol로 지속적인 상태 동기화 → 충돌 방지

  • 대역 부족:
    초기 서브넷 설정이 작으면 Pod 스케일 아웃 시 문제 발생 → IPALLOC_RANGE 재설정 필요


🚀 정리

  • Kubernetes는 IPAM을 직접 관리하지 않음
    CNI가 100% 책임

  • Weave는 자동, 분산형 IP 관리 제공
    → 소규모/중규모 클러스터에 강력

  • 대규모 환경에서는 Calico나 Cilium이 더 효율적일 수 있음

profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글