OVN-Kubernetes EgressIP가 보조 NIC로 나가지 않을 때 보는 라우팅 기준
RHOCP/OVN-Kubernetes에서 EgressIP는 잡혔지만 실제 송신이 기본망으로 나가는 상황을 source policy routing과 tcpdump로 확인하는 절차입니다.
OVN-Kubernetes EgressIP를 보조 NIC 대역으로 쓰려면 "EgressIP가 생성됐다"와 "패킷이 그 NIC로 나간다"를 구분해야 합니다. EgressIP 리소스가 정상이어도 source 기반 라우팅이 없으면 패킷이 기존 default route로 나갈 수 있습니다.
1. NIC와 route를 먼저 확인한다
ip addr show br-ex
ip addr show bond-egress
ip route2. EgressIP 대상 노드와 namespace를 라벨로 묶는다
oc label node <worker-node> k8s.ovn.org/egress-assignable=
oc get nodes --show-labels | grep egress-assignable
oc label ns <namespace> egress=secondary
oc get ns --show-labels | grep egress=secondary3. EgressIP는 /32 VIP로 보이는 것이 정상이다
apiVersion: k8s.ovn.org/v1
kind: EgressIP
metadata:
name: egress-secondary
spec:
egressIPs:
- 10.108.0.50
namespaceSelector:
matchLabels:
egress: secondaryoc apply -f egress-secondary.yaml
oc get egressip -o wide
ip addr show br-ex | grep 10.108.0.504. source policy routing으로 송신 NIC를 고정한다
echo "108 egress108" >> /etc/iproute2/rt_tables
ip rule del from 10.108.0.50/32 table egress108 2>/dev/null || true
ip route flush table egress108 2>/dev/null || true
ip rule add from 10.108.0.50/32 table egress108 priority 1080
ip route add 10.108.0.0/24 dev bond-egress src 10.108.0.50 table egress108
ip route add default via 10.108.0.1 dev bond-egress table egress108
ip route get 8.8.8.8 from 10.108.0.505. tcpdump와 Pod 테스트로 증명한다
tcpdump -ni bond-egress host 8.8.8.8
tcpdump -ni bond-egress arp
conntrack -L | grep 10.108.0.50
oc run egress-test \
--image=registry.access.redhat.com/ubi9/ubi \
-n <namespace> \
-it --rm -- bash
curl -s https://ifconfig.me정리
OVN-Kubernetes EgressIP 장애는 리소스 생성 여부만 보면 안 됩니다. 노드 라벨, namespaceSelector, /32 VIP 표시, source policy routing, 보조 NIC tcpdump, Pod 외부 IP 확인을 한 줄로 연결해야 합니다.