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가지 법을 지켜야 합니다.
- 포드 간 통신 (Pod-to-Pod Communication):
- 1번 서버(노드)에 떠 있는 포드 A와, 2번 서버(노드)에 떠 있는 포드 B는, NAT(네트워크 주소 변환) 꼼수 없이 오리지널 IP 주소 그대로 직접 1:1 라우팅 통신이 가능해야 합니다.
- 노드-포드 간 통신 (Node-to-Pod Communication):
- 클러스터 내의 모든 물리 서버(Node)는, 그 어떤 서버에 떠 있는 포드(Pod)와도 NAT 없이 다이렉트로 통신할 수 있어야 합니다.
- 자아 인식 IP 일치 (Self-awareness):
- 포드 안에서 자기가 자기 IP를 조회해 본 결과(
ip addr)와, 다른 포드가 나를 부를 때 쓰는 내 IP가 100% 똑같은 하나의 진짜 IP여야 합니다. (포트 포워딩 떡칠 금지)
- 포드 안에서 자기가 자기 IP를 조회해 본 결과(
Ⅲ. CNI의 동작 원리 (플러그인 호출)
개발자가 쿠버네티스에 kubectl apply 명령어로 "웹서버 컨테이너 1개 띄워!"라고 지시합니다.
- 쿠버네티스는 껍데기 포드(Pod) 공간을 하나 만듭니다.
- 쿠버네티스가 설치된 **CNI 플러그인(예: Calico)을 툭 찌르며 (API 호출) "야! 1번 방 만들어졌으니까 IP 하나 던져주고 가상 랜선 꽂아 놔!"**라고 명령합니다.
- CNI 플러그인이 후다닥 달려와서 자기 방식대로 가상 IP를 찍어주고 가상 스위치(브릿지)를 연결한 뒤, "완료했습니다!"라고 보고하면 그때부터 포드가 인터넷을 시작합니다.
Ⅳ. CNI 생태계의 다양한 플러그인들 (3대장)
쿠버네티스 사용자는 내 회사 인프라 상황에 맞춰 입맛대로 골라 꽂으면 됩니다.
- Flannel (플라넬): 설치가 가장 쉽습니다. 복잡한 라우팅 없이 그냥 모든 서버를 817번에서 배운 **VXLAN 가상 터널(오버레이 망)**로 덮어버려 하나로 묶습니다. 보안 제어(네트워크 정책) 기능이 없어 실무보단 테스트용으로 씁니다. (823번)
- Calico (칼리코) 🌟: 실무 1대장입니다. 무거운 VXLAN 터널을 안 뚫고, BGP 라우팅 프로토콜을 써서 패킷을 다이렉트로 쏴버리는 초고속 깡패입니다. 게다가 방화벽(네트워크 정책) 기능이 미치도록 강력합니다. (824번)
- Cilium (실리움): 요즘 가장 뜨는 차세대 끝판왕입니다. 리눅스 커널을 마개조하는 eBPF 기술을 써서, 아예 라우팅 속도를 극한으로 끌어올리고 보안 검사를 커널 단에서 빛의 속도로 해치웁니다. (825번)
📢 섹션 요약 비유: 쿠버네티스라는 건물주는 방(컨테이너)을 수만 개 짓는 건축의 달인이지만, 수도 배관이나 전기 공사(네트워크)는 할 줄 모릅니다. 그래서 배관공 협회에 "내가 방을 하나 지을 때마다, 이 규격(콘센트 구멍 크기)에 딱 맞는 배관을 와서 설치해 줘!"라고 가이드라인을 반포했는데, 이 문서가 바로 **CNI(표준 명세서)**입니다. 이 문서를 보고 수많은 배관 하청업체(Flannel, Calico, Cilium)들이 서로 "우리 회사 배관(터널링 방식, BGP 방식)이 더 물이 빨리 통합니다!"라며 경쟁을 벌이고, 건물주(관리자)는 자기 예산과 용도에 맞는 업체를 골라 플러그인처럼 꽂아 쓰는 완벽한 하청(외주) 생태계입니다.