티스토리 뷰

Container

CNI 개념

VIRGIL ABLOH 2026. 1. 17. 11:32
반응형

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

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

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


1. CNI (Container Network Interface)란?

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

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

  • CNI의 역할: 파드(Pod)에게 IP 주소를 할당하고, 네트워크 인터페이스를 관리합니다.
  • 플러그인: 이 규칙을 지켜서 만든 실제 제품들이 Flannel, Calico, AWS VPC CNI 등입니다.

💡 비유: USB 포트

  • CNI = USB 포트: 삼성 마우스를 꽂든, 로지텍 키보드를 꽂든 작동하게 해주는 표준.
  • Flannel = 특정 마우스 제품: 그 포트에 꽂아서 실제로 동작하는 도구.

2. Flannel과 Cross-Node 통신

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

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

1) CNI(Flannel)가 없을 때

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

  • 내 컴퓨터(Node A) 안에 있는 파드끼리는 통신이 됩니다.
  • 하지만 **다른 컴퓨터(Node B)**로 데이터를 보내려고 하면 길을 잃습니다. 물리적인 라우터나 공유기는 파드의 가상 IP(예: 10.244.1.5)를 모르기 때문입니다.

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 (부하분산 및 포워딩)

🚗 상황극으로 이해하기

  • Service: "고객님, 목적지는 백엔드 파드입니다. 주소는 10.244.1.5로 찍고 가세요." (안내)
  • CNI: "네, 그 주소(10.244.1.5)로 가시려면 제가 뚫어놓은 이 터널을 통과해서 옆 동네 컴퓨터로 건너가시면 됩니다." (이동)

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

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

  • Flannel: 파드에게 가짜(가상) IP를 주고 포장해서 보냄. (조금 느림)
  • AWS VPC CNI: 파드에게 **진짜 AWS IP(VPC IP)**를 줌.
    • 포장할 필요 없이 EC2 통신하듯이 바로 쏠 수 있음. (빠르고 성능이 좋음)

5. 요약

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

1. CNI (Container Network Interface)

  • 역할: "IP 할당 및 네트워크 연결 담당"
  • 동작: 쿠버네티스(Kubelet)가 파드를 만들 때 CNI를 호출합니다. CNI는 사용 가능한 IPv4 주소를 할당하고, 파드 내부에 **네트워크 인터페이스(eth0)**를 생성하여 통신이 가능한 상태로 만들어줍니다.

2. Service (서비스)

  • 역할: "부하 분산 및 트래픽 포워딩 담당"
  • 동작: 파드는 생성과 삭제가 반복되면서 IP가 계속 바뀝니다. 서비스는 이 변동되는 파드 IP 목록(Endpoints)을 실시간으로 관리합니다. 외부나 내부에서 요청(Request)이 오면, 서비스는 관리 중인 IP 목록 중 하나로 트래픽을 안전하게 **연결(Forwarding)**해 줍니다.
반응형

'Container' 카테고리의 다른 글

Kubernetes 개념정리  (0) 2026.01.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함