CNI(Container Network Interface)는 컨테이너 런타임과 네트워크 구현체 사이의 인터페이스 표준입니다. CNCF(Cloud Native Computing Foundation)에서 정의하였으며, 주로 Kubernetes, Docker, Containerd 등의 런타임에서 컨테이너 네트워크 설정을 위해 사용됩니다.
컨테이너는 기본적으로 격리된 환경에서 동작하기 때문에 네트워크 설정이 자동화되고 일관성 있어야 합니다. 특히 Kubernetes처럼 수천 개의 컨테이너가 생성/소멸되는 환경에서는 CNI의 역할이 필수적입니다.
역할 | 설명 |
---|---|
IP 할당 | 각 Pod에 고유한 IP 주소 부여 |
라우팅 설정 | Pod 간 통신 및 외부와의 통신 경로 설정 |
플러그인 관리 | 다양한 네트워크 구현체와 연동 (예: Calico, Flannel) |
멀티 네트워크 지원 | Pod에 여러 개의 NIC 부착 가능 (Multus CNI 활용) |
CNI는 크게 런타임, CNI 플러그인, CNI 설정 파일, 네트워크 구성 스크립트로 구성됩니다.
구성 요소 | 설명 |
---|---|
CNI 플러그인 | 실제 네트워크 작업(IP 할당, 라우팅 등)을 수행하는 실행 파일 |
설정 파일 | /etc/cni/net.d/ 에 JSON 형식으로 존재. 어떤 플러그인을 어떻게 쓸지 정의 |
런타임 | Docker, containerd, CRI-O 등이 CNI를 호출 |
ADD/DEL 명령 | 컨테이너 생성 시 ADD , 삭제 시 DEL 명령을 플러그인에 전달 |
이름 | 특징 |
---|---|
Flannel | 가장 간단하고 널리 사용됨. Overlay 방식 기반 |
Calico | 고성능, L3 기반 라우팅, 네트워크 정책 지원 |
Cilium | eBPF 기반 고성능 네트워크, 보안정책 통합 |
Weave | 가시성과 암호화 기능 강화 |
Canal | Flannel + Calico 조합 |
Multus | 하나의 Pod에 다중 네트워크 인터페이스 부여 |
Kube-OVN | SDN 기반, OVN(Open Virtual Network) 활용 |
ADD
명령을 CNI 플러그인에 전달DEL
명령 호출고려 요소 | 설명 |
---|---|
규모 | 노드 수가 많다면 Calico, Cilium 추천 |
보안 | 네트워크 정책이 중요하면 Cilium 또는 Calico |
성능 | 로우레벨 성능이 필요하다면 eBPF 기반 Cilium |
간단한 구성 | 테스트나 소규모 클러스터에서는 Flannel |
CNI는 기본적으로 보안 정책을 자체적으로 지원하지 않음, 하지만 Calico, Cilium은 네트워크 정책을 내장하여 다음과 같은 기능을 지원합니다:
NetworkPolicy
객체를 통해 정책을 CNI와 연결합니다.항목 | 설명 |
---|---|
정의 | 컨테이너 런타임과 네트워크 사이의 인터페이스 표준 |
핵심 기능 | IP 할당, 라우팅, 플러그인 기반 네트워크 구성 |
동작 방식 | 런타임에서 CNI 플러그인을 호출해 네트워크 설정 |
대표 플러그인 | Flannel, Calico, Cilium, Multus 등 |
Kubernetes와의 연동 | Pod에 네트워크 자동 구성 및 정책 적용 |
보안 정책 | Calico/Cilium으로 네트워크 레벨 접근 제어 가능 |
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…