[CKA] Kubernetes Pod 네트워킹 모델

Pod 네트워크 모델을 Linux bridge, veth, 라우팅과 NAT 실습에 연결해 설명합니다.

각 Pod는 클러스터 범위의 고유 IP를 가집니다. 의도적으로 격리하지 않았다면 Pod는 같은 노드와 다른 노드의 Pod에 NAT 없이 직접 통신할 수 있어야 합니다. 같은 Pod의 컨테이너는 하나의 네트워크 네임스페이스를 공유하므로 localhost로 통신합니다.

한 노드의 네트워크 구성

아래는 별도 Linux 실습 호스트에서 관리자 권한으로 구성하는 예시입니다. red, v-net-0, veth-red라는 이름이 아직 사용되지 않은 상태를 전제로 합니다.

ip netns add red
ip -n red link set lo up
ip link add v-net-0 type bridge
ip link set dev v-net-0 up
ip addr add 192.168.15.5/24 dev v-net-0
ip link add veth-red type veth peer name veth-red-br
ip link set veth-red netns red
ip -n red addr add 192.168.15.1/24 dev veth-red
ip -n red link set veth-red up
ip link set veth-red-br master v-net-0
ip link set veth-red-br up

외부 인터페이스가 eth0인 실습 환경에서는 기본 경로, 호스트의 IP 포워딩과 외부 통신용 NAT를 다음과 같이 설정합니다. 호스트 방화벽도 포워딩 트래픽을 허용해야 합니다.

ip netns exec red ip route add default via 192.168.15.5
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -o eth0 -j MASQUERADE

여러 노드에서는 노드마다 다른 Pod 서브넷을 배정하고 라우터에 경로를 모으거나 CNI가 오버레이 또는 라우팅을 구성합니다. Flannel VXLAN 예시의 패킷은 Pod → veth → cni0 → flannel.1 → 노드 인터페이스를 지나고 대상 노드에서 역순으로 전달됩니다.

참고: Kubernetes 클러스터 네트워킹