Skip to the content.

[Kubernetes] CNI, Flannel, 그리고 Service의 차이 완벽 정리

쿠버네티스를 공부하다 보면 네트워크 부분에서 머리가 아파옵니다. CNI, Flannel, Service… 다 통신을 하게 해주는 것 같은데, 도대체 무슨 차이가 있을까요?

이번 글에서는 쿠버네티스 네트워크의 핵심 개념들을 **“도로”와 “내비게이션”**에 비유하여 아주 쉽게 정리해 보겠습니다.


1. CNI (Container Network Interface)란?

한 줄 요약: 쿠버네티스 네트워크의 “표준 규격(인터페이스)”

쿠버네티스는 직접 네트워크 기능을 만들지 않았습니다. 대신 **“IP는 이렇게 주고, 연결은 이렇게 하라”**는 규칙(Interface)만 정해두었습니다. 이 규칙이 바로 CNI입니다.

? 비유: USB 포트


2. Flannel과 Cross-Node 통신

핵심 질문: 서로 다른 컴퓨터(Node)에 있는 파드끼리는 어떻게 통신할까?

쿠버네티스 클러스터는 여러 대의 컴퓨터(Node)로 이루어져 있습니다. 문제는 Node A에 있는 파드가 Node B에 있는 파드에게 데이터를 보낼 때 발생합니다.

1) CNI(Flannel)가 없을 때

각 노드는 **“고립된 섬”**입니다.

2) CNI(Flannel)가 있을 때

Flannel은 노드들 사이에 **“가상의 터널(Overlay Network)”**을 뚫습니다.

  1. 포장(Encapsulation): 파드의 데이터가 노드 밖으로 나갈 때, Flannel이 겉포장을 한 번 더 쌉니다. (“이거 사실 Node B로 가는 거야”라고 표시)
  2. 전송: 물리 네트워크를 타고 Node B로 이동합니다.
  3. 개봉(Decapsulation): Node B의 Flannel이 포장을 뜯고, 안에 있는 파드에게 데이터를 전달합니다.

참고 (Flannel ID / VNI): 이때 Flannel은 패킷을 구분하기 위해 VNI(VXLAN Network Identifier)라는 식별자(보통 1번)를 붙여서 전송합니다.


3. Service와 CNI의 차이점

가장 헷갈리는 부분입니다. 둘 다 통신을 돕는데 무엇이 다를까요?

     
구분 CNI (Flannel 등) Service (ClusterIP 등)
     
비유 도로 & 터널 내비게이션 & 목적지
역할 물리적으로 **“갈 수 있는 길”**을 만듦 논리적으로 “누구에게 갈지” 안내함
문제 해결 “다른 컴퓨터까지 어떻게 가지?” “파드 IP가 자꾸 바뀌는데 누굴 찾지?”
작동 계층 L2/L3 (네트워크 연결) L4 (부하분산 및 포워딩)

? 상황극으로 이해하기


4. (심화) AWS EKS는 다르다?

일반적인 쿠버네티스는 Flannel 같은 오버레이(Overlay) 방식을 쓰지만, AWS EKS는 기본적으로 AWS VPC CNI를 사용합니다.


5. 요약

  1. CNI는 쿠버네티스 네트워크의 도로 공사 담당이다. 파드 간의 물리적인 연결 길을 뚫어준다.
  2. Flannel은 CNI의 구현체 중 하나로, **패킷을 포장(캡슐화)**해서 다른 노드로 배달해 주는 역할을 한다.
  3. Service내비게이션이다. IP가 자주 바뀌는 파드들을 대신해 고정된 주소를 제공하고 올바른 파드로 안내한다.
  4. CNI가 없으면? 도로가 끊긴 것과 같다. 같은 노드 내에서만 통신되고, 다른 노드로 나가는 순간 통신이 두절된다.

1. CNI (Container Network Interface)

2. Service (서비스)