피드로 돌아가기
Dev.toInfrastructure
원문 읽기
NAT 없는 Flat Pod Networking과 추상화 레이어를 통한 서비스 가용성 확보
Kubernetes Networking Explained: Pods, Services, Ingress, and Network Policies
AI 요약
Context
Pod IP의 Ephemeral 특성으로 인한 통신 불안정성과 수평 확장 시의 트래픽 분산 처리 한계 존재. 네트워크 계층의 혼재로 인한 502 에러 및 DNS 해석 실패 등의 디버깅 복잡성 증대.
Technical Solution
- CNI(Container Network Interface) 표준 준수를 통한 모든 Pod 간 NAT 없는 직접 통신 가능한 Flat Network 구조 설계
- ClusterIP를 활용한 Stable Virtual Endpoint 구축으로 Pod 재스케줄링 시 발생하는 IP 변경 문제 해결
- Label Selector 기반의 Endpoints 동적 관리 및 kube-proxy의 iptables/IPVS 룰 업데이트를 통한 L4 로드밸런싱 구현
- Ingress Controller 도입을 통한 L7 라우팅 계층 분리 및 단일 진입점 기반의 외부 트래픽 제어 최적화
- NetworkPolicy를 통한 Zero Trust 기반의 Pod 간 트래픽 제어로 보안 가시성 및 격리 수준 향상
- Headless Service 설정을 통해 ClusterIP를 배제하고 개별 Pod IP를 직접 반환하는 서비스 디스커버리 메커니즘 제공
실천 포인트
1. 서비스 통신 불가 시 `kubectl get endpoints`로 Selector 일치 여부 우선 확인
2. Ingress 502 에러 발생 시 Ingress 설정보다 Backend Pod의 Health와 targetPort 일치 여부 검증
3. NetworkPolicy 적용 시 DNS resolution을 위한 UDP/53 포트 Egress 허용 설정 필수 검토
4. 외부 의존성 연결 시 코드 내 하드코딩 대신 ExternalName 서비스를 통한 DNS Alias 관리