CNI 종류 분석( Calico vs. Cilium vs. Flannel )

도람·2025년 11월 5일
post-thumbnail

CNI

앞선 게시물에서, CNI(Container Network Interface) 덕분에
쿠버네티스가 다양한 네트워크 솔루션(CNI 플러그인)을 표준 방식으로 사용할 수 있다는 것을 배웠다.

이번 글에서는 가장 널리 사용되는 CNI 도구인 Flannel, Calico, Cilium을 비교하여 살펴보려 한다.


iptables

Cilium의 주요 장점 중 하나로 자주 언급되는 “iptables를 사용하지 않는다”는 문장을 이해하기 위해
먼저 iptables가 무엇인지 알아보자.

iptables란?
iptables는 리눅스 커널에 내장된 패킷 필터링 및 네트워크 트래픽 제어 도구이다.
즉, “이 IP로 들어오는 트래픽은 어디로 보낼지”, “이 포트는 차단할지 허용할지” 등을
규칙 체인(rule chain) 으로 관리한다.

기존의 CNI, 예를 들어 Flannel이나 Calico(기본 모드)
이 iptables 규칙을 통해 트래픽의 흐름을 제어한다.


Flannel : 단순한 기본

Flannel은 가장 단순하고 가벼운 CNI 플러그인이다.
클러스터 설치 직후 별도의 설정 없이도 파드 간 통신이 가능하며, 복잡한 네트워크 튜닝이 필요하지 않다는 점이 가장 큰 장점이다.

Flannel은 Pod 간 통신을 가능하게 하는 것 자체에 목적이 있다.
따라서 “파드끼리 통신만 되면 된다”는 단순한 환경에는 매우 적합하다.

다만 다음과 같은 한계가 있다.

  • 네트워크 정책(Network Policy)을 지원하지 않는다.
  • 트래픽 암호화를 제공하지 않는다.
  • 대규모 트래픽 처리나 보안이 중요한 프로덕션 환경에는 적합하지 않다.

-> 즉, Flannel은 경량 쿠버네티스 배포판(k3s 등) 에서 빠르게 통신 환경을 구성하고 싶을 때 가장 적합한 CNI이다.


Calico : 한 단계 높은 확장성

Calico는 대규모 환경과 고급 네트워크 제어 기능에 초점을 맞춘 CNI이다.
가장 큰 특징은 오버레이 네트워크를 사용하지 않고, 순수 L3(레이어 3) 라우팅을 통해 파드 간 통신을 구현한다는 점이다.

각 노드는 BGP(Border Gateway Protocol) 를 사용해 라우터처럼 동작하며,
자신의 노드에서 실행 중인 파드들의 IP 대역을 다른 노드에게 “이 IP 대역으로 가려면 나에게 오라”고 광고(Advertise)한다.

이를 통해 오버레이 캡슐화(예: VXLAN) 없이도 효율적인 네트워크 경로를 제공한다.

but, 이러한 구조 때문에 설정이 비교적 복잡하고 네트워크에 대한 이해가 필요하다.


Cilium : 클러스터에 실제로 필요한 업그레이드

cilium은 차세대로 나온 CNI로서 단순히 파드 간 통신을 넘어서 보안, 가시성, 서비스 메시 기능까지 통합 제공한다.

iptables나 kube-proxy를 우회하고 커널 레벨에서 네트워크 로직을 직접 실행하기 때문에
속도 저하 없이 효율적으로 네트워크 정책과 로드밸런싱을 수행한다.

Cilium의 특징은 다음과 같다 .

  • eBPF 기반 고성능 네트워킹 (kube-proxy 불필요)
  • Hubble을 통한 실시간 트래픽 관찰
  • L7 기반 네트워크 정책 (IP/Port가 아닌 API 인식 정책)
  • WireGuard를 통한 암호화 지원
  • 서비스 메시 기능 내장 (사이드카 없이 mTLS, 트래픽 분할 지원)
  • ClusterMesh를 통한 멀티 클러스터 연결

즉, 기존 CNI들이 단순히 파드끼리 연결만 해주는 수준이었다면,
Cilium은 그 위에 보안(암호화, 정책 제어), 가시성(트래픽 관찰), 서비스 제어(통신 제어) 기능까지
한 번에 통합해서 처리한다.

또한 위에서 말했 듯, 트래픽을 제어하는 iptables를 거치지 않고 커널 내부에서 직접 동작하기 때문에
속도는 더 빠르고, 제어는 더 정교하며, 자원 소모는 더 적다.


총평 요약

| CNI         | 특징                   | 장점                      | 단점                  |
| ----------- | -------------------- | ------------------------- | -------------------- |
| **Flannel** | 단순한 오버레이 네트워크   | 설치 간편, 경량              |     보안·정책 미지원     |
| **Calico**  | L3 기반 라우팅          | 고성능, 네트워크 정책         |      설정 복잡          |
| **Cilium**  | eBPF 기반 차세대 CNI    | 고성능, 보안·가시성·서비스 통합 | 최신 커널 필요, 운영 복잡도 |

참고자료
[쿠버네티스 공식 홈페이지 - Use Calico for NetworkPolicy]
https://kubernetes.io/ko/docs/tasks/administer-cluster/network-policy-provider/calico-network-policy/
[wikidocs - 01. [비교 분석] Calico vs. Cilium vs. Flannel: 우리 플랫폼에 맞는 CNI 선택 가이드]
https://wikidocs.net/303582
[Medium - Stop Using the Wrong CNI in 2025: Flannel vs Calico vs Cilium]
https://pdelarco.medium.com/stop-using-the-wrong-cni-flannel-vs-calico-vs-cilium-in-2025-c11b42ce05a3

profile
정도를 걷는 엔지니어

0개의 댓글