클라우드/Kubernetes

CNI란 무엇인가요? | Kubernetes 컨테이너 네트워크 인터페이스 완벽 정리

Jinwookoh 2025. 5. 4. 13:08

 

Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼에서 컨테이너의 네트워크를 어떻게 구성할 수 있을까요? 바로 이 역할을 담당하는 핵심 기술이 **CNI(Container Network Interface)**입니다.

이 글에서는 CNI란 무엇인지, 어떤 구조로 동작하는지, 그리고 주요 CNI 플러그인에는 어떤 것들이 있는지 쉽게 설명드리겠습니다.


✅ CNI란?

**CNI(Container Network Interface)**는 컨테이너의 네트워크 인터페이스를 생성하고 삭제하는 기능을 수행하는 표준 인터페이스 스펙입니다.

  • CNCF(Cloud Native Computing Foundation)에서 관리
  • 주로 Kubernetes, containerd, CRI-O 등의 컨테이너 런타임 환경에서 사용
  • 컨테이너가 생성될 때 IP 할당, 가상 네트워크 구성, 라우팅 설정 등을 자동으로 처리

🔧 CNI 구성 요소

CNI는 다음과 같은 구성 요소로 이루어져 있습니다.

구성 요소 설명
CNI Spec CNI 플러그인의 실행 방식과 JSON 설정 구조를 정의한 규격입니다.
CNI 플러그인 네트워크 연결을 실제로 구성하는 실행 가능한 바이너리입니다.
CNI 설정 파일 /etc/cni/net.d/ 경로에 위치하며, 어떤 플러그인을 어떤 옵션으로 실행할지 정의합니다.

⚙️ Kubernetes에서 CNI의 동작 원리

Kubernetes에서는 파드(Pod)가 생성될 때 다음과 같은 방식으로 CNI가 동작합니다:

  1. kubelet이 컨테이너를 생성할 때 CNI를 호출
  2. CNI 플러그인이 가상 네트워크 인터페이스를 생성
  3. 컨테이너에 IP 주소 할당
  4. 라우팅 테이블 및 네트워크 정책 적용

이 과정을 통해 각각의 파드가 서로 통신하거나 외부와 연결될 수 있습니다.


🌐 대표적인 CNI 플러그인

플러그인 이름 특징
bridge 가장 기본적인 CNI. 단일 노드 테스트 환경에 적합
flannel 오버레이 네트워크. 설정이 간단하고 널리 사용됨
calico 고성능. 네트워크 정책 및 보안 기능에 강점
cilium eBPF 기반으로 높은 보안성과 성능 제공
weave 빠른 설치와 자동 네트워크 구성 지원

이 외에도 수십 가지 CNI 플러그인이 존재하며, 각자의 목적과 특성에 맞게 선택할 수 있습니다.


🔍 CNI vs Kubernetes 네트워킹

많은 분들이 혼동하는 개념 중 하나는 "Kubernetes가 네트워크를 직접 관리하지 않는다"는 점입니다.
Kubernetes는 네트워킹 규칙(예: 파드 간 통신 가능)을 정의만 하고, 실제 구현은 CNI 플러그인에게 위임합니다.

따라서 Kubernetes 클러스터를 구축할 때 어떤 CNI 플러그인을 선택하느냐에 따라 네트워크 아키텍처, 성능, 보안이 달라질 수 있습니다.


✨ 마무리: CNI의 중요성

CNI는 단순한 네트워크 구성 도구가 아닙니다.
컨테이너 네트워크의 표준을 제공하고, 멀티 클러스터 통신, 네트워크 보안 정책, IPAM 등 다양한 확장 기능을 가능하게 합니다.

Kubernetes 환경에서 네트워크 구성을 이해하고 최적화하고 싶다면, CNI에 대한 이해는 필수입니다.