반응형
SNAT = Source Network Address Translation
→ "출발지 IP/Port를 바꿔서 외부와 통신하는 기술"
예를 들어:
[Pod] 10.244.3.25:5678
→ Azure NAT Gateway or LB
→ 바깥 세상: 20.1.2.3:SNAT_PORT
즉, 하나의 Node 또는 Load Balancer IP가 많은 Pod의 외부 요청을 처리할 때,
각 요청을 구분하려면 고유한 "SNAT 포트"가 필요해!
🔥 SNAT Port가 부족하면?
⚠️ SNAT port exhaustion (포트 고갈) 발생
증상설명
외부 호출이 끊김 | 외부 API 요청 실패, DNS 실패 등 |
연결 hang | 요청 보냈는데 응답 없음 |
불규칙 장애 | 특정 시간대에만 터짐 (요청 많을 때만) |
🎯 Azure에서 SNAT 포트 기본 동작
항목기본값
Azure 기본 Internal LB | SNAT 포트 자동 할당 (임시, 수 제한 있음) |
NAT Gateway 사용 시 | VM당 64,000개 이상의 SNAT 포트 할당 가능 |
하나의 외부 IP 기준 | 약 1024~64000 SNAT 포트 (IP 1개당) 사용 가능 |
즉, 많은 Pod이 같은 Node에서 같은 IP로 외부 연결을 시도하면 SNAT 포트가 금방 부족해짐.
✅ 실전 예: Pod이 외부 API 호출할 때
[Pod A] → Node IP + SNAT 포트 30001
[Pod B] → Node IP + SNAT 포트 30002
...
→ 같은 Public IP 하나를 공유함
→ 포트가 부족하면 더 이상 외부로 나갈 수 없음
🛠 해결 방법
방법설명
✅ NAT Gateway 사용 | SNAT 포트 수를 확장하고 IP도 여러 개 붙일 수 있음 |
✅ Pod 분산 | 같은 Node에 너무 많은 Pod이 몰리지 않게 |
✅ SNAT 연결 재사용 | Connection Pooling 등을 이용해 재연결 방지 |
✅ 외부 연결 줄이기 | Sidecar, Proxy 사용하여 트래픽 제어 |
💡 마무리 요약
개념설명
SNAT 포트 | Node 또는 LB가 Pod 대신 외부와 통신할 때 사용하는 출발지 포트 |
왜 필요? | 여러 요청이 같은 IP를 공유하기 때문에, 구분 위해 필요 |
문제 상황 | SNAT 포트 고갈 시 외부 요청 불가, 간헐적 장애 발생 |
해결 방법 | NAT Gateway 도입, 노드 분산, 포트 재사용 등 |
반응형