Pod Networking

Yu Sang Min·2025년 6월 26일

CKA

목록 보기
77/110

🚀 Kubernetes Pod Networking 완전 이해


🏗️ 기존 네트워크와의 차이

  • 노드 간 네트워크는 이미 설정 완료
  • 하지만 Pod 간 통신 네트워크는 별도 레이어

→ Kubernetes는 Pod Networking을 직접 제공하지 않는다. → 반드시 CNI 플러그인으로 구현 필요


🎯 Kubernetes Pod Networking 기본 요구 사항

  1. 각 Pod는 고유한 IP를 가진다.
  2. 같은 노드 안의 Pod는 IP로 직접 통신 가능하다.
  3. 다른 노드의 Pod도 IP로 직접 통신 가능하다.
  4. NAT 없이 통신 가능해야 한다.

🔥 즉, Pod 간 통신은 마치 물리적인 서버 간의 통신처럼 Layer 3 기반의 IP 통신이어야 한다.


🗺️ Pod 네트워크 수동 설계 프로세스

1️⃣ 노드 네트워크

노드물리/가상 IP (노드용)
Node1192.168.1.11
Node2192.168.1.12
Node3192.168.1.13

2️⃣ Pod 네트워크 설계

  • 각 노드마다 별도의 Bridge 네트워크 생성
  • Bridge 네트워크 서브넷:
노드Bridge 서브넷Bridge IP
Node110.244.1.0/2410.244.1.1
Node210.244.2.0/2410.244.2.1
Node310.244.3.0/2410.244.3.1

3️⃣ Pod 생성 시 네트워크 연결 절차

  • Namespace 생성 → Pod의 독립 네트워크 공간
  • veth pair 생성 → 하나는 Pod 내부, 하나는 Bridge 연결
  • Bridge에 연결
  • Pod에 IP 할당 (예: Node1의 첫 번째 Pod → 10.244.1.2)
  • Default Gateway 설정 (Bridge IP)

🔗 노드 간 라우팅 설정

목적지 네트워크경유 노드 IP
10.244.2.0/24192.168.1.12
10.244.3.0/24192.168.1.13

→ 각 노드는 다른 노드의 Pod 네트워크에 대한 라우팅 필요

ip route add 10.244.2.0/24 via 192.168.1.12
ip route add 10.244.3.0/24 via 192.168.1.13

→ 또는 중앙 라우터에 라우팅 설정


🔥 이 방식의 한계

  • 클러스터가 커질수록 라우팅 관리가 복잡
  • 수동으로 처리하기에는 너무 번거로움
  • 그래서 등장한 표준화된 솔루션 → CNI (Container Network Interface)

🧠 CNI의 역할

역할설명
✅ AddPod 생성 시 네트워크 연결, IP 할당, Bridge 연결
✅ DelPod 종료 시 네트워크 해제, IP 반환
✅ Check상태 점검 (선택적)
  • Kubernetes는 Pod 생성 시마다 CNI 플러그인을 호출
  • 플러그인은 /opt/cni/bin/ 같은 디렉토리에 위치
  • 설정 파일은 /etc/cni/net.d/에 존재

🚀 Pod Networking Workflow (CNI 기준)

[Kubelet] → [Container Runtime] → [CNI Plugin (Add)] 
→ [Namespace 생성 + veth 생성 + Bridge 연결 + IP 할당 + Routing] 
→ Pod Ready

→ Pod 삭제 시는 동일하게 CNI Plugin의 Del 호출


🔥 핵심 요약

  • Pod 간 통신은 물리 네트워크 수준의 L3 통신

  • 노드 간 라우팅 → CNI 플러그인에서 자동 처리

  • 대표적인 CNI 플러그인:

    • Calico → 라우팅 기반
    • Flannel → VXLAN 기반 Overlay
    • Cilium → eBPF 기반 고성능 네트워크
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글