Service 내부 트래픽 정책
Service 내부 트래픽 정책 (service-traffic-policy)
클러스터 안의 두 파드가 통신하려고 하는데, 두 파드가 실제로 같은 노드에서 실행 중이라면 Service 내부 트래픽 정책(Service Internal Traffic Policy) 을 사용해서 네트워크 트래픽을 그 노드 안에 유지할 수 있어요. 클러스터 네트워크를 경유하는 왕복을 피하는 것은 신뢰성, 성능(네트워크 지연과 처리량), 비용 측면에서 도움이 될 수 있어요.
기능 상태: Kubernetes v1.26부터 Stable
Service 내부 트래픽 정책 은 내부 트래픽을 트래픽이 발생한 노드 안의 엔드포인트로만 라우팅하도록 제한할 수 있게 해줘요. 여기서 '내부' 트래픽이란 현재 클러스터의 파드에서 발생한 트래픽을 말해요. 이렇게 하면 비용을 줄이고 성능을 향상시킬 수 있죠.
Service 내부 트래픽 정책 사용하기
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
동작 방식
kube-proxy는 spec.internalTrafficPolicy 설정에 따라 자기가 라우팅하는 엔드포인트를 필터링해요. Local로 설정하면 노드 로컬 엔드포인트만 고려돼요. Cluster(기본값)이거나 설정되지 않은 경우, Kubernetes는 모든 엔드포인트를 고려해요.