Container Network Interface
Container Network Interface 는 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼에서 컨테이너 네트워크 구성을 표준화하기 위해 설계된 플러그인 기반의 인터페이스 사양이다. CNCF(Cloud Native Computing Foundation)의 산하 프로젝트이며, Pod 간 통신, IP 할당, 네트워크 정책 적용 등을 담당하는 핵심 컴포넌트이다.
컨테이너 런타임(예: containerd, CRI-O)과 네트워크 플러그인(예: Calico, Flannel 등) 사이의 연결을 중개하며, Pod의 생애주기 이벤트에 따라 네트워크를 자동으로 설정·해제하는 방식으로 동작한다.
주요 특징
- 표준화된 인터페이스 제공: 다양한 네트워크 플러그인이 CNI 사양을 따르기만 하면 연동이 가능하도록 하였다.
- 경량화된 설계: 간단한 JSON 설정 파일과 바이너리 실행 구조를 따르므로 설치 및 운영이 간편하다.
- 플러그인 중심 구조: IPAM(주소 할당), Routing, 정책 적용 등 기능별로 독립된 플러그인 조합 가능.
- Kubernetes와의 긴밀한 연계: kubelet과 container runtime이 Pod 생성 시 CNI 플러그인을 호출함.
- 다양한 플러그인 지원: Calico, Flannel, Cilium, Weave, Multus 등과 같은 주요 네트워크 구현체와 호환된다.
장점
- 유연성: 네트워크 기능을 단일 플러그인으로 통합하거나 여러 기능별 플러그인으로 분리해 사용 가능.
- 확장성: 복잡한 네트워크 시나리오(예: 멀티 NIC, SR-IOV)도 Multus와 같은 CNI 확장 플러그인으로 지원 가능.
- 운영 일관성 확보: 컨테이너 런타임 환경과 관계없이 일관된 방식으로 네트워크를 설정할 수 있다.
- 표준 기반 호환성: 다양한 프로젝트 및 클라우드 환경에서도 동일한 네트워크 설정 및 정책 적용 가능.
- 자동화: Pod 생성 시 자동으로 네트워크 인터페이스 생성 및 IP 할당이 이루어짐.
관련 용어
- CNI 플러그인: CNI 사양에 따라 동작하는 네트워크 구현체. calico, flannel, bridge, host-local 등이 있다.
- IPAM (IP Address Management): CNI 플러그인의 일부로, IP 주소 할당 및 회수 기능을 담당함.
- Multus: 여러 개의 CNI 플러그인을 Pod에 동시에 적용할 수 있게 해주는 메타 CNI 플러그인.
- containerd / CRI-O: CNI를 호출하는 컨테이너 런타임 환경.
- kubelet: CNI 플러그인을 호출하여 네트워크를 설정하는 Kubernetes 에이전트.
주요 솔루션 및 사용 사례
- 주요 솔루션
- Calico: 보안 정책, 네트워크 라우팅, IPAM 등 종합 기능을 제공하는 대표적인 CNI 플러그인.
- Flannel: Overlay 기반의 단순한 네트워크 전파 기능을 제공하여 소규모 클러스터에 적합하다.
- Cilium: eBPF 기반의 고성능 네트워크 및 보안 정책을 제공하는 차세대 네트워크 솔루션.
- Multus: Pod에 복수의 NIC(Network Interface Card)를 할당할 수 있는 확장형 CNI.
- Weave Net: 자동 네트워크 연결 및 서비스 디스커버리 기능을 내장한 사용자 친화적 네트워크 솔루션.
- 사용 사례
- Kubernetes 클러스터 구성 시 기본 네트워크 설정: kubeadm init 이후 CNI 플러그인을 설치하여 Pod 간 통신 가능하게 함.
- 멀티 NIC 환경 구성: Multus를 활용하여 Pod에 관리 네트워크와 데이터 네트워크를 동시에 연결함.
- 서비스 간 네트워크 분리: NetworkPolicy 기능과 연계하여 보안 영역 분리 적용 가능.
- 고성능 보안 정책 적용: Cilium을 통해 eBPF 기반 보안 정책을 세밀하게 적용.
- 하이브리드 클라우드 연계: CNI 기반 네트워크 설정을 통해 온프레미스와 클라우드 간 일관된 네트워크 환경 구성.