Networking - IP Address Management

2025. 1. 15. 01:17쿠버네티스/쿠버네티스

728x90
반응형

쿠버네티스에서 **IP 주소 관리(IP Address Management, IPAM)**는 각 Pod와 가상 네트워크에 고유한 IP 주소를 할당하고 이를 관리하는 중요한 작업입니다. 이 과정은 CNI(Container Network Interface) 러그인과 이에 속한 IPAM 플러그인을 통해 이루어집니다. 아래에서 주요 개념과 Weave CNI 플러그인을 포함한 구체적인 구현 방식을 설명합니다.

IP 주소 관리의 주요 개념

  1. 책임 주체:
    • 쿠버네티스 자체는 IP 주소 할당 방법에 관여하지 않습니다. 대신, 네트워크 솔루션 제공자인 CNI 플러그인이 이 작업을 담당합니다
    • CNI 플러그인은 Pod에 네트워크 인터페이스를 설정하고, IPAM 플러그인을 호출하여 IP 주소를 할당합니다
  2. IP 주소 할당 방식:
    • 각 노드에는 **Pod CIDR(Cluster-wide Subnet)**가 할당되며, 해당 노드의 Pod들은 이 범위 내에서 IP를 받습니다
    • CNI 구성 파일의 ipam 션에서 사용할 IPAM 플러그인 유형과 서브넷 등을 정의할 수 있습니다
  3. 중복 방지:
    • IPAM 플러그인은 클러스터 내에서 중복되지 않는 고유한 IP를 보장합니다. 이를 위해 로컬 데이터베이스 파일이나 중앙 저장소에 할당 정보를 기록합니다

CNI와 기본 IPAM 플러그인

  1. Host-Local 플러그인:
    • 각 노드별로 로컬 데이터베이스를 사용해 IP를 관리합니다.
    • 설정 예시:
{
  "type": "host-local",
  "subnet": "10.22.0.0/16",
  "routes": [{ "dst": "0.0.0.0/0" }]
}

구성 요소 설명

  • "type": 사용할 CNI 플러그인(예: bridge, host-local).
  • "subnet": 사용할 IP 주소 대역(예: 10.22.0.0/16).
  • "routes": 트래픽 라우팅 경로(예: 모든 트래픽(0.0.0.0/0) 허용).
  • host-local: 각 호스트별로 IP 주소를 관리하는 로컬 IPAM 솔루션입니다. 이 플러그인은 지정된 서브넷에서 IP 주소를 할당하며, 각 노드는 독립적으로 IP 주소 범위를 관리합니다.

DHCP 플러그인:

  • DHCP 서버를 사용하여 동적으로 IP를 할당합니다.
  • 네트워크 외부와의 통합이 필요한 경우 유용합니다

Whereabouts:

  • 클러스터 전체에서 중앙 집중식으로 IP 범위를 관리하며, 데이터 저장소를 사용하여 상태를 추적합니다.
  • 설정 예시:
{
  "type": "whereabouts",
  "range": "192.168.2.0/24"
}

https://www.cni.dev/plugins/current/ipam/

 

CNI

 

www.cni.dev

https://dougbtv.com/nfvpe/2019/11/27/whereabouts-a-cluster-wide-cni-ipam-plugin/

 

Whereabouts -- A cluster-wide CNI IP Address Management (IPAM) plugin · dougbtv

Whereabouts -- A cluster-wide CNI IP Address Management (IPAM) plugin 27 Nov 2019 Something that’s a real challenge when you’re trying to attach multiple networks to pods in Kubernetes is trying to get the right IP addresses assigned to those interface

dougbtv.com

https://gornoba.github.io/devops/kubernetes/networking/ip-address-management

 

쿠버네티스에서의 IP 주소 관리 (IPAM) | Hyunhoo's blog

 

gornoba.github.io

https://docs.tigera.io/calico/latest/networking/ipam/get-started-ip-addresses

 

Get started with IP address management | Calico Documentation

Configure Calico to use Calico IPAM or host-local IPAM, and when to use one or the other.

docs.tigera.io

Weave CNI 플러그인의 IPAM 구현

  1. 기본 동작:
    • Weave는 기본적으로 10.32.0.0/12 위를 사용하여 약 100만 개의 IP를 제공합니다
    • 이 범위는 클러스터의 모든 노드 간에 균등하게 분할되며, 각 노드는 자신에게 할당된 서브넷 내에서 Pod에 IP를 할당합니다.
  2. 구성 가능 옵션:
    • 사용자 정의 범위를 설정하려면 Weave 배포 시 --ipalloc-range 옵션을 사용합니다.
weave launch --ipalloc-range 10.200.0.0/16
  1. CNI 플러그인 설정 확인: /etc/cni/net.d/ 디렉토리에서 확인 가능.
  2. Weave의 네트워크 범위 확인: ip addr show weave 명령어 사용.
  3. 포드의 라우팅 정보 확인: kubectl exec <pod-name> -- ip route
반응형