K8s Network - Ingress 동작 원리 (12)

박민준·2025년 7월 4일
0

Ingress 동작 원리

ingress 규칙에 따라 Ingress controller pod가 요청을 패킷으로 전달합니다.
이때, 주소 변환(NAT) 작업이 빈번하게 발생되는 것은 필연적이라고 할 수 있습니다.

아래 다이어그램에서의 빨간 박스 지점이 NAT가 발생하는 지점으로 간단한 구조임에도 두번의 NAT가 발생함을 알 수 있습니다.

  • 불필요한 지점 다수 발생(오버헤드 높아짐)

Ingress endpoint

위와 같은 이유로 인하여 Ingress controller pod는 Servcie를 사용하여 파드로 트래픽을 라우팅하지 않습니다.
대신 Endpoint API를 사용하요 kube-proxy를 우회하고, 세션 어피니티 및 LB 같은 Nginx의 기능을 제공합니다.

  • iptables DNAT에 대한 conntrack 항목 같은 일부 오버헤드가 제거됨

Service ByPass

현재 ingress 구성은 아래와 같이, 일반적인 service > pod의 흐름 구조로 되어 있습니다.
이때, 빨간 박스를 살펴보시면, endpoints 가 설정되어 있으며, 이는 Service와 연결된 Pod의 IP입니다.

  • Pod IP 확인

위 내용을 다이어그램으로 표현하면 아래와 같습니다.
위와 같이 ingress에 endpoints가 지정되어 있다면, Service를 굳이 찍지 않고, ByPass하여 Endpoints인 Nginx Pod로 다이렉트 통신됩니다.

Ingress role/cluster rolebinding

위와 같이 Ingress는 Service의 Endpoints 항목을 가져올 수 있어야하기에, role/cluster role에 대한 rolebinding이 되어 있습니다.
kubectl -n ingress-nginx describe role ingress-nginx | grep endpoints
kubectl describe clusterrole ingress-nginx | grep endpoints

profile
바교망

0개의 댓글