Search

Service Internal Traffic Policy

EKS 같은 쿠버네티스 환경을 사용하는 경우 서로 다른 워커 노드 간에 트래픽을 전달하는 것 역시 비용을 발생시키므로, 가능하다면 동일한 워커 노드에 있는 Pod에 트래픽이 전달되도록 한다면 비용도 절감할 수 있고 성능도 개선할 수 있을 것입니다.
Service Internal Traffic Policy v1.26 버전에서 stable로 들어온 feature로, 이 설정을 통해 어떤 Pod에서 시작된 트래픽이 동일한 노드 내의 엔드포인트로만 트래픽을 라우팅하도록 할 수 있습니다.
아래와 같이 internalTrafficPolicy를 할 경우 요청이 온 노드에 있는 파드한테만 요청을 보내게 됩니다.
이 설정을 통해 kube-proxy 는 클러스터 내부 트래픽을 노드 내부 엔드포인트로만 사용하도록 합니다.
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app.kubernetes.io/name: MyApp ports: - protocol: TCP port: 80 targetPort: 9376 internalTrafficPolicy: Local
YAML
복사
kube-proxy는 .spec.internalTrafficPolicy 의 설정에 따라서 라우팅되는 엔드포인트를 필터링하며, 2가지 값을 사용합니다.
Local
노드 내부 엔드포인트만 라우팅
Cluster
(default) 모든 엔드포인트로 라우팅, .spec.internalTrafficPolicy를 설정하지 않으면 해당 값으로 적용됩니다.
쿠버네티스 문서를 참고하면, .spec.internalTrafficPolicy: Local 을 설정하고 동일한 노드에 대상 Pod가 없으면 다른 노드에 있는 대상 Pod가 있더라도 엔드포인트가 없는 것처럼 동작한다고 설명하고 있습니다.