Routing
🔧 Cilium 네트워크 모드 비교
📦 방식 1: Encapsulation (VXLAN, Geneve)
- 기본 모드 (요구 사항이 가장 적음)
- 노드 간 터널 메시(VXLAN/Geneve)를 자동 구성
- 모든 Cilium 노드 간 트래픽이 캡슐화되어 전달됨
🟢 장점
- 단순성: 네트워크가 PodCIDR을 몰라도 됨 : 이부분이 가장 중요한 점인데 노드의 연결만 보장 된다면 그 이후의 파드 라우팅에는 신경을 쓰지 않아도 됨. 이는 Cilium 노드가 이미 서로 연결된다면 모든 라우팅 요구사항이 이미 충족됬기 때문
- 유연성: 다양한 L2/L3 구조에서도 동작
- 정체성 컨텍스트 지원: 메타데이터(예: 보안 ID) 전송 가능
🔴 단점
- MTU 오버헤드: 패킷당 약 50바이트 손실 (VXLAN 기준)
- 성능 저하 가능성 → 점보 프레임으로 완화 가능
⚙️ 설정
tunnel-protocol: vxlan # 또는 geneve
tunnel-port: 8472 # geneve는 6081
🚀 방식 2: Native Routing (PodCIDR 라우팅)
- 캡슐화 없이 Linux 커널의 라우팅 테이블을 활용
- PodCIDR 경로가 노드 간 라우팅 가능해야 함
🟢 장점
- 높은 성능: 캡슐화 없음 → MTU 손실 없음
- 클라우드 친화적: VPC 라우팅 등과 잘 통합
- 직접 전달: 커널 라우팅 활용으로 최적 경로 제공
🔴 단점
- 구성 복잡도 증가: PodCIDR 라우팅 구성 필요
- L2 네트워크일 경우 auto-direct-node-routes: true
- 아니면 BGP 또는 라우터 필요
⚙️ 설정
routing-mode: native
ipv4-native-routing-cidr: 10.x.0.0/16
auto-direct-node-routes: true # (L2 네트워크 시)

💬 Tip: AWS, GCP, Azure 같은 퍼블릭 클라우드에서는 Native Routing + CNI 연동이 일반적입니다. 하지만 네트워크 구성 권한이 없거나 복잡한 라우팅이 어려운 환경이라면 Encapsulation 방식이 더 실용적입니다.
Native Routing 실습 1.
- auto-direct-node-routes: true 는 동일 L2 네트워크 공유 시, 걱 노드의 PodCIDR에 대한 Linux 커널 라우팅 테이블에 삽입.
- 설정 방법 : routing-mode: native
routing-mode: native
ipv4-native-routing-cidr: 10.x.0.0/16
auto-direct-node-routes: true # (L2 네트워크 시)
1. 통신이 되려면 curlpod가 위치한 워커노드가 webpod의 pod cidr을 라우팅 테이블에 가지고 있어야함
#
kubectl get pod -owide
# Webpod1,2 파드 IP
export WEBPODIP1=$(kubectl get -l app=webpod pods --field-selector spec.nodeName=k8s-ctr -o jsonpath='{.items[0].status.podIP}')
export WEBPODIP2=$(kubectl get -l app=webpod pods --field-selector spec.nodeName=k8s-w1 -o jsonpath='{.items[0].status.podIP}')
echo $WEBPODIP1 $WEBPODIP2
# curl-pod 에서 WEBPODIP2 로 ping
kubectl exec -it curl-pod -- ping $WEBPODIP2

2. ctr노드의 라우팅 테이블 확인

- 172.20.0 대역에 대한 모든 IP에 대해서 node eth1로 보낸 후 워커노드 101번으로 보냄
- 해당 워커노드에 자기 pod에 대한 lxc 라우팅 정보가 있음

2. hubble-observe로 확인
#
cilium hubble port-forward&
hubble observe -f --pod curl-pod
Jul 27 04:21:27.648: default/curl-pod (ID:15584) -> default/webpod-857687f8b6-wdxhq (ID:46396) to-network FORWARDED (ICMPv4 EchoRequest)
Jul 27 04:21:27.649: default/curl-pod (ID:15584) <- default/webpod-857687f8b6-wdxhq (ID:46396) to-endpoint FORWARDED (ICMPv4 EchoReply)
#
tcpdump -i eth1 icmp
#
tcpdump -i eth1 icmp -w /tmp/icmp.pcap
termshark -r /tmp/icmp.pcap

터미널 샤크로 보면 pod IP 로 직접 통신하는것을 볼수 있다.
오버레이 , Encapsulation , NAT 하지 않기 때문에 성능 우위.

'컨테이너 > 쿠버네티스 네트워크' 카테고리의 다른 글
| [Cilium] (9) 실리움 네트워킹_ NodeLocalDNS, Cilium LRP (4) | 2025.07.29 |
|---|---|
| [Cilium] (8) 실리움 네트워킹 _ Masquerading (4) | 2025.07.29 |
| [Cilium] (6) 실리움 네트워킹 _ IPAM (2) | 2025.07.28 |
| [Cilium] (5) 실리움 네트워킹 _ observability with Prometeus & Grafana (3) | 2025.07.22 |
| [Cilium] (4) 실리움 네트워킹 _ Hubble (2) | 2025.07.21 |