1. CNI란 무엇인가요?

CNI(Container Network Interface)는 컨테이너 런타임과 네트워크 구현체 사이의 인터페이스 표준입니다. CNCF(Cloud Native Computing Foundation)에서 정의하였으며, 주로 Kubernetes, Docker, Containerd 등의 런타임에서 컨테이너 네트워크 설정을 위해 사용됩니다.

특징

  • 컨테이너 생성/삭제 시 네트워크를 동적으로 설정
  • IP 주소 할당, 라우팅, NAT, 방화벽 등 네트워크 기능 설정 가능
  • 플러그인 기반 구조로 다양한 네트워크 모델과 연동 가능

2. 왜 CNI가 필요한가요?

컨테이너는 기본적으로 격리된 환경에서 동작하기 때문에 네트워크 설정이 자동화되고 일관성 있어야 합니다. 특히 Kubernetes처럼 수천 개의 컨테이너가 생성/소멸되는 환경에서는 CNI의 역할이 필수적입니다.

역할설명
IP 할당각 Pod에 고유한 IP 주소 부여
라우팅 설정Pod 간 통신 및 외부와의 통신 경로 설정
플러그인 관리다양한 네트워크 구현체와 연동 (예: Calico, Flannel)
멀티 네트워크 지원Pod에 여러 개의 NIC 부착 가능 (Multus CNI 활용)

3. CNI의 구성요소

CNI는 크게 런타임, CNI 플러그인, CNI 설정 파일, 네트워크 구성 스크립트로 구성됩니다.

구성 요소설명
CNI 플러그인실제 네트워크 작업(IP 할당, 라우팅 등)을 수행하는 실행 파일
설정 파일/etc/cni/net.d/에 JSON 형식으로 존재. 어떤 플러그인을 어떻게 쓸지 정의
런타임Docker, containerd, CRI-O 등이 CNI를 호출
ADD/DEL 명령컨테이너 생성 시 ADD, 삭제 시 DEL 명령을 플러그인에 전달

4. 주요 CNI 플러그인 종류

이름특징
Flannel가장 간단하고 널리 사용됨. Overlay 방식 기반
Calico고성능, L3 기반 라우팅, 네트워크 정책 지원
CiliumeBPF 기반 고성능 네트워크, 보안정책 통합
Weave가시성과 암호화 기능 강화
CanalFlannel + Calico 조합
Multus하나의 Pod에 다중 네트워크 인터페이스 부여
Kube-OVNSDN 기반, OVN(Open Virtual Network) 활용

5. CNI 동작 방식

기본 흐름:

  1. 컨테이너 생성 요청 발생
  2. 런타임이 CNI 설정(JSON) 로드
  3. ADD 명령을 CNI 플러그인에 전달
  4. 플러그인이 IP 주소 할당, 라우팅, 가상 인터페이스 설정
  5. 컨테이너에 네트워크 인터페이스가 부착됨
  6. 삭제 시 DEL 명령 호출

6. CNI 선택 기준

고려 요소설명
규모노드 수가 많다면 Calico, Cilium 추천
보안네트워크 정책이 중요하면 Cilium 또는 Calico
성능로우레벨 성능이 필요하다면 eBPF 기반 Cilium
간단한 구성테스트나 소규모 클러스터에서는 Flannel

7. 보안과 네트워크 정책

CNI는 기본적으로 보안 정책을 자체적으로 지원하지 않음, 하지만 Calico, Cilium은 네트워크 정책을 내장하여 다음과 같은 기능을 지원합니다:

  • Pod 간 트래픽 제한 (Namespace, Label 기반)
  • 이중 허용/차단 정책 (Allow/Deny)
  • L3/L4 레벨까지 제어 가능
  • Audit 및 로깅

8. Kubernetes에서의 CNI 구성 예시

  • Kubernetes에서는 NetworkPolicy 객체를 통해 정책을 CNI와 연결합니다.

9. 정리

항목설명
정의컨테이너 런타임과 네트워크 사이의 인터페이스 표준
핵심 기능IP 할당, 라우팅, 플러그인 기반 네트워크 구성
동작 방식런타임에서 CNI 플러그인을 호출해 네트워크 설정
대표 플러그인Flannel, Calico, Cilium, Multus 등
Kubernetes와의 연동Pod에 네트워크 자동 구성 및 정책 적용
보안 정책Calico/Cilium으로 네트워크 레벨 접근 제어 가능

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

3일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

6일 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

2주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago