[CKA] Kubernetes IP 주소 관리

노드와 Pod의 주소 할당 책임을 나누고 CNI IPAM 설정과 실습 확인 방법을 정리합니다.

노드 주소는 기반 인프라에서 관리하고, Pod 주소는 CNI 플러그인의 IPAM 기능이 할당합니다. Kubernetes는 한 가지 IPAM 구현을 강제하지 않으며 네트워크 솔루션이 중복 없는 주소 할당을 구현합니다.

host-local IPAM

CNI 설정의 ipam 항목은 사용할 플러그인, 서브넷과 경로를 지정합니다. host-local은 각 노드의 로컬 저장소에서 주소 할당 상태를 관리하므로 노드마다 겹치지 않는 서브넷을 배정해야 합니다.

{
  "cniVersion": "1.0.0",
  "name": "pod-network",
  "type": "bridge",
  "bridge": "cni0",
  "isGateway": true,
  "ipam": {
    "type": "host-local",
    "subnet": "10.244.1.0/24",
    "routes": [{"dst": "0.0.0.0/0"}]
  }
}

실습 환경의 Weave는 전체 주소 범위를 피어 사이에 나누고 각 노드에서 Pod IP를 할당했습니다. 범위는 배포 옵션으로 바꿀 수 있으므로 실제 설정과 로그로 확인합니다.

ls /etc/cni/net.d
kubectl get pods -n kube-system -o wide
kubectl logs -n kube-system <cni-pod>
ip route
kubectl exec <pod> -- ip route

이 순서로 사용 중인 네트워크 솔루션, 노드별 에이전트, Pod 대역과 기본 경로를 확인할 수 있습니다.