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가 있더라도 엔드포인트가 없는 것처럼 동작한다고 설명하고 있습니다.