822. 컨테이너 네트워킹 인터페이스 (CNI, Container Network Interface) - 쿠버네티스 망 포드간 생태계 표준

핵심 인사이트: 윈도우나 리눅스를 설치하면 랜카드(네트워크) 설정은 그냥 알아서 잡힌다. 하지만 쿠버네티스(k8s)는 깡통이다. 서버 100대에 수만 개의 컨테이너(Pod)를 띄워놓고 "알아서 통신해라" 던져주지만, 정작 **어떤 규칙으로 IP를 나눠주고, 어떤 가상의 랜선으로 엮을지(오버레이를 쓸지 라우팅을 쓸지)**에 대해서는 쿠버네티스 코어 자체에 1줄도 짜여 있지 않다. 쿠버네티스가 외쳤다. "네트워크 만드는 방법은 세상에 너무 많으니까 내가 안 할래! 대신 니들이 내 입맛(표준)에 맞춰 플러그인을 꽂아주면 내가 돌려줄게!" 그 텅 빈 콘센트 규격, 그것이 CNI다.

Ⅰ. CNI (Container Network Interface)의 개념

  • 개념: 쿠버네티스나 클라우드 파운드리 같은 컨테이너 오케스트레이션 플랫폼 환경에서, **컨테이너(Pod)들의 네트워크 환경(IP 할당, 삭제, 가상 라우팅 연결)을 구성하고 제어하기 위한 서드파티(Third-party) '네트워크 플러그인 표준 명세서(API 규격)'**입니다. (CNCF 재단 관리)
  • 존재 이유: 쿠버네티스는 오직 "컨테이너를 띄우고 죽이는 일"만 잘합니다. 네트워크 연결이라는 복잡한 일은 CNI 규격을 지켜서 만든 외부 소프트웨어(Flannel, Calico, Cilium 등)에게 100% 외주(아웃소싱)를 줍니다.

Ⅱ. CNI가 쿠버네티스에서 무조건 보장해야 하는 3대 절대 규칙 🌟

내가 직접 CNI 플러그인을 만들어서 쿠버네티스에 팔려면, 무조건 아래 3가지 법을 지켜야 합니다.

  1. 포드 간 통신 (Pod-to-Pod Communication):
    • 1번 서버(노드)에 떠 있는 포드 A와, 2번 서버(노드)에 떠 있는 포드 B는, NAT(네트워크 주소 변환) 꼼수 없이 오리지널 IP 주소 그대로 직접 1:1 라우팅 통신이 가능해야 합니다.
  2. 노드-포드 간 통신 (Node-to-Pod Communication):
    • 클러스터 내의 모든 물리 서버(Node)는, 그 어떤 서버에 떠 있는 포드(Pod)와도 NAT 없이 다이렉트로 통신할 수 있어야 합니다.
  3. 자아 인식 IP 일치 (Self-awareness):
    • 포드 안에서 자기가 자기 IP를 조회해 본 결과(ip addr)와, 다른 포드가 나를 부를 때 쓰는 내 IP가 100% 똑같은 하나의 진짜 IP여야 합니다. (포트 포워딩 떡칠 금지)

Ⅲ. CNI의 동작 원리 (플러그인 호출)

개발자가 쿠버네티스에 kubectl apply 명령어로 "웹서버 컨테이너 1개 띄워!"라고 지시합니다.

  1. 쿠버네티스는 껍데기 포드(Pod) 공간을 하나 만듭니다.
  2. 쿠버네티스가 설치된 **CNI 플러그인(예: Calico)을 툭 찌르며 (API 호출) "야! 1번 방 만들어졌으니까 IP 하나 던져주고 가상 랜선 꽂아 놔!"**라고 명령합니다.
  3. CNI 플러그인이 후다닥 달려와서 자기 방식대로 가상 IP를 찍어주고 가상 스위치(브릿지)를 연결한 뒤, "완료했습니다!"라고 보고하면 그때부터 포드가 인터넷을 시작합니다.

Ⅳ. CNI 생태계의 다양한 플러그인들 (3대장)

쿠버네티스 사용자는 내 회사 인프라 상황에 맞춰 입맛대로 골라 꽂으면 됩니다.

  • Flannel (플라넬): 설치가 가장 쉽습니다. 복잡한 라우팅 없이 그냥 모든 서버를 817번에서 배운 **VXLAN 가상 터널(오버레이 망)**로 덮어버려 하나로 묶습니다. 보안 제어(네트워크 정책) 기능이 없어 실무보단 테스트용으로 씁니다. (823번)
  • Calico (칼리코) 🌟: 실무 1대장입니다. 무거운 VXLAN 터널을 안 뚫고, BGP 라우팅 프로토콜을 써서 패킷을 다이렉트로 쏴버리는 초고속 깡패입니다. 게다가 방화벽(네트워크 정책) 기능이 미치도록 강력합니다. (824번)
  • Cilium (실리움): 요즘 가장 뜨는 차세대 끝판왕입니다. 리눅스 커널을 마개조하는 eBPF 기술을 써서, 아예 라우팅 속도를 극한으로 끌어올리고 보안 검사를 커널 단에서 빛의 속도로 해치웁니다. (825번)

📢 섹션 요약 비유: 쿠버네티스라는 건물주는 방(컨테이너)을 수만 개 짓는 건축의 달인이지만, 수도 배관이나 전기 공사(네트워크)는 할 줄 모릅니다. 그래서 배관공 협회에 "내가 방을 하나 지을 때마다, 이 규격(콘센트 구멍 크기)에 딱 맞는 배관을 와서 설치해 줘!"라고 가이드라인을 반포했는데, 이 문서가 바로 **CNI(표준 명세서)**입니다. 이 문서를 보고 수많은 배관 하청업체(Flannel, Calico, Cilium)들이 서로 "우리 회사 배관(터널링 방식, BGP 방식)이 더 물이 빨리 통합니다!"라며 경쟁을 벌이고, 건물주(관리자)는 자기 예산과 용도에 맞는 업체를 골라 플러그인처럼 꽂아 쓰는 완벽한 하청(외주) 생태계입니다.