Service 내부 트래픽 정책
Service 내부 트래픽 정책 (Service Internal Traffic Policy)
클러스터의 두 Pod가 통신하려 하는데, 두 Pod가 실제로 같은 노드에서 실행된다면 Service 내부 트래픽 정책(Service Internal Traffic Policy)을 사용해 네트워크 트래픽을 그 노드 안에 유지할 수 있어요. 클러스터 네트워크를 통한 왕복을 피하면 안정성, 성능(네트워크 지연과 처리량), 비용 면에서 도움이 될 수 있어요.
기능 상태: Kubernetes v1.26부터 Stable.
Service 내부 트래픽 정책은 내부 트래픽 제한을 활성화해 트래픽이 발생한 노드 내의 엔드포인트로만 내부 트래픽을 라우팅하게 해요. 여기서 "내부(internal)" 트래픽은 현재 클러스터의 Pod에서 발생한 트래픽을 뜻해요. 이는 비용을 줄이고 성능을 개선하는 데 도움이 될 수 있어요.
출처: 문서
본문
Service 내부 트래픽 정책 사용하기 (Using Service Internal Traffic Policy)
Service의 .spec.internalTrafficPolicy를 Local로 설정하면 내부 전용 트래픽 정책을 활성화할 수 있어요. 이는 kube-proxy에게 클러스터 내부 트래픽에 대해 노드 로컬 엔드포인트만 사용하라고 지시해요.
참고: 주어진 Service에 대한 엔드포인트가 없는 노드의 파드에 대해서는, 그 Service가 다른 노드에 엔드포인트를 가지고 있어도 (이 노드의 파드에 대해서는) 엔드포인트가 0개인 것처럼 동작해요.
다음 예시는 .spec.internalTrafficPolicy를 Local로 설정했을 때 Service가 어떻게 보이는지 보여드려요.
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app.kubernetes.io/name: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
internalTrafficPolicy: Local
동작 방식 (How it works)
kube-proxy는 spec.internalTrafficPolicy 설정에 따라 라우팅할 엔드포인트를 필터링해요. Local로 설정하면 노드 로컬 엔드포인트만 고려돼요. Cluster(기본값)이거나 설정되지 않으면 쿠버네티스는 모든 엔드포인트를 고려해요.
다음 단계 (What's next)
- 토폴로지 인지 라우팅(Topology Aware Routing)에 대해 읽기
- Service 외부 트래픽 정책에 대해 읽기
- Service로 애플리케이션 연결하기 튜토리얼 따라가기