지난 시간에는 네트워킹의 전체적인 개요를 훑어봤다면, 이번에는 파드 네트워킹의 심장이라 할 수 있는 Pause 컨테이너와 캘리코(Calico)의 상세한 동작 원리를 파헤쳐 보겠다.
1. 파드 네트워킹의 기반: Pause 컨테이너

파드를 생성하면 우리가 직접 만든 컨테이너 외에도 Pause 컨테이너라는 녀석이 자동으로 생성된다. 이 녀석이 파드 내 네트워크의 '앵커' 역할을 한다.
- 네트워크 네임스페이스의 공유: Pause 컨테이너가 고유한 IP와 네트워크 인터페이스(eth0)를 가진 네트워크 네임스페이스를 먼저 생성한다. 쿠버네티스는 이 공간을 파드 내의 모든 컨테이너가 같이 쓰도록 구성해준다.
- 컨테이너 간 통신: 모든 컨테이너가 동일한 IP를 공유하기 때문에, 컨테이너끼리는 포트(Port)를 통해서만 구분하기만 하면 된다. 서로 localhost로 통신이 가능하다.
- 호스트와의 연결?: 워커 노드의 호스트 영역(Host Network Namespace)에는 가상 인터페이스(calid12)가 생성되어 Pause 컨테이너의 인터페이스와 1:1로 매칭된다.
2. 네트워크 플러그인 비교: kubenet vs Calico
기본 네트워크 구성 방식인 kubenet과 우리가 주로 사용하는 Calico는 인터페이스를 엮는 구조부터 다르다.
2-1. kubenet (기본 네트워크)

- 브리지 구조: 파드의 가상 인터페이스들이 cbr0라는 컨테이너 브리지에 연결되는 구조다.
- 제약 사항: 브리지의 CIDR 대역은 파드 네트워크보다 낮은 단계로 세팅되며, 한 노드당 최대 약 255개의 IP만 할당 가능하다는 단점이 있다.
- 라우터 역할: NAT를 통해 파드 대역 트래픽은 브리지로, 그 외는 외부 호스트 네트워크로 보내주는 역할을 한다.
2-2. Calico CNI (실제 실습 환경)

- 직접 라우팅 구조: 브리지 없이 가상 인터페이스가 라우터에 바로 연결된다.
- 장점: 더 큰 CIDR 범위를 지원하여 한 노드에 더 많은 파드 IP를 부여할 수 있고, 라우터 수준에서 강력한 보안 기능을 제공한다.
3. 노드 간 통신과 오버레이(Overlay) 네트워크

캘리코의 진가는 서로 다른 노드에 있는 파드끼리 대화할 때 나타난다. 이를 위해 IPIP나 VXLAN 같은 오버레이 네트워크 기술을 사용한다.
[실전 흐름] 노드 2의 파드 D → 노드 1의 파드 B 통신 과정
- 호출: 파드 D가 목적지 파드 B의 IP(20.111.156.7)로 트래픽을 날린다.
- 전달: 트래픽은 라우터를 지나 오버레이 네트워크 층으로 올라간다.
- 캡슐화 (Encapsulation): 캘리코는 목적지 IP가 어느 노드에 있는지 알고 있다. 원래의 파드 패킷 위에 노드 1의 호스트 IP를 덮어씌운다(Outer IP). 실제 파드 IP는 안으로 숨겨진다.
- 전송: 패킷은 노드 1의 물리 인터페이스(192.168.59.22)로 안전하게 이동한다.
- 역캡슐화 (Decapsulation): 노드 1의 오버레이 층에서 겉싸개를 벗겨내고 원래의 파드 IP를 찾아낸다.
- 최종 배달: 라우터를 통해 해당 IP를 가진 가상 인터페이스를 찾아 파드 B에게 트래픽을 전달한다.
💡꼬리 질문
Q: 만약 오버레이 네트워크(IPIP/VXLAN) 설정을 끄고 캘리코를 운영한다면, 노드 간 파드 통신은 어떤 방식으로 이루어져야 할까? 이때 네트워크 인프라 팀에 특별히 요청해야 할 사항은 무엇일까?
결론: 물리 네트워크 장비가 각 노드에 있는 파드 IP 대역을 직접 라우팅할 수 있도록 설정해야 한다.
- BGP 모드 활용: 캡슐화 없이 통신하려면 캘리코가 각 노드의 라우팅 정보를 물리 라우터와 교환(BGP 사용)해야 한다.
- 물리 장비의 역할: 인프라 팀은 클러스터 외부의 라우터가 "파드 IP 대역은 해당 워커 노드 IP를 거쳐야 한다"는 사실을 알 수 있도록 경로를 등록해 줘야 한다.
- 장점: 캡슐화에 따른 성능 오버헤드가 없어지지만, 네트워크 장비가 클러스터 내부의 동적인 변화를 모두 수용해야 하므로 인프라 복잡도가 올라간다.
'Cloud Native > Kubernetes' 카테고리의 다른 글
| 8. [Architecture]: Storage - File / Object / Block Storage (0) | 2026.01.31 |
|---|---|
| 7-2. [Architecture]: Networking - Service Network (0) | 2026.01.31 |
| 7. [Architecture]: Networking (0) | 2026.01.31 |
| 6. [Architecture]: Component - kube-apiserver, etcd, kube-schedule, kube-proxy, kube-controlelr-manager (0) | 2026.01.31 |
| 5. Autoscaler - HPA (Horizontal Pod Autoscaler) (0) | 2026.01.30 |