CNI ( Container Network Interface)
쿠버네티스 환경에 실무에 접하게 됐을 때 의외로 네트워킹 부분이 상당히 어렵고 학습하기 까다롭습니다. 대부분의 실무자들을 보면 Container의 Networking 자체를 이해하지 못해 어려움을 겪는 모습들을 많이 보았습니다.
해당 토픽에서는 컨테이너는 어떻게 네트워크 통신을 할까?라는 주제로 Docker 네트워크 구조를 바탕으로 쉽게 풀어보겠습니다.


도커가 실행될 때 리눅스 커널의 netfilter(iptables)에는 크게 두 가지 핵심 작업(Masquerading, DNAT)을 위한 규칙이 등록됩니다.

docker0로 들어가는 패킷은 Docker 체인 규칙 적용
컨테이너가 먼저 요청해서 돌아오는 응답 패킷(RELATED,ESTABLISHED)은 무조건 통과
docker0에서 나와서 외부로 가는 패킷(! -o docker0)은 통과-> 인터넷 접속 허용
docker0 안에서끼리 통신하는 패킷(-i docker0 -o docker0)도 통과 ->컨테이너 간 통신 허용

실제 NAT룰 셋을 보면 도커 데몬이 netfilter 제어 하여 라우팅 체인을 제어하였고, 등록되었습니다.

애플리케이션을 배포 하였고, Docker 대역대에 2번 IP와 3번 IP를 할당 받았습니다.


도커는 내부에 IPAM (IP Address Management) Driver를 내장하고 있습니다. 해당 드라이버를 사용해 미리 정의된 서브넷대역 내에서 사용 가능한 IP를 순차적으로 계산(Bitmap/List)하여 컨테이너 생성 시점에 즉시 주입해 Start 시 IP Range중 빈 IP 할당 종료 시 IP회수 작업을 반복하게 됩니다.
해당 CNI에 대한 개념은 이후 쿠버네티스의 Service ingress 등 네트워킹 개념을 이해할 때 선행되지 않으면 절대로
이해가 불가능합니다. 꼭 학습 후 넘어가시는 것을 추천드립니다.
'쿠버네티스' 카테고리의 다른 글
| [쿠버네티스] 자원에도 울타리가 필요하다: Cgroups와 OOM Killer (0) | 2026.03.11 |
|---|---|
| [쿠버네티스] 네임스페이스(Namespace)로 만드는 마법: 컨테이너가 서로를 볼 수 없는 이유 (0) | 2025.11.24 |
| [쿠버네티스] "어디서든 돌아가는 컨테이너의 비밀" 표준 규격 OCI가 중요한 이유 (0) | 2025.10.26 |
| [쿠버네티스] 컨테이너의 대명사 '도커', 아키텍처로 이해하는 빌드와 배포의 메커니즘 (1) | 2025.07.28 |
| [쿠버네티스] 물리 서버에서 클라우드 네이티브까지: 서버 인프라 격변의 중심 '컨테이너' (1) | 2025.07.28 |