728x90

목차

     

    1. externalTrafficPolicy란?

    externalTrafficPolicy는 외부에서 접근하는 트래픽이 클러스터 내부로 전달되는 방식을 결정하는 옵션이다. 이 설정은 주로 NodePort 또는 LoadBalancer 타입의 서비스에서 사용되며, 외부 트래픽을 클러스터의 각 노드에 어떻게 분산할지를 지정한다.

    Local   :  트래픽을 수신한 노드의 IP로 접근 가능
    Cluster:  모든 노드에서 수신 가능하며, 서비스의 엔드포인트를 가진 모든 Pod로 분산
    kubectl edit svc ingress-nginx-controller -n ingress-nginx
    # 로컬로 설정하면 파드가 할당된 노드 IP로만 인그레스 접근이 가능하다.
    externalTrafficPolicy: Local
    # 클러스터로 설정하면 마스터노드~모든 워커노드 IP에서 인그레스 접근이 가능하다.
    externalTrafficPolicy: Cluster

     

    2. externalTrafficPolicy의 두 가지 설정 예시

    2.1 externalTrafficPolicy: Local

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: default
    spec:
      type: LoadBalancer
      externalTrafficPolicy: Local
      selector:
        app: my-app
      ports:
      - protocol: TCP
        port: 80
        targetPort: 8080

    Local 옵션을 선택하면, Pod가 실제로 할당된 노드에서만 트래픽을 수신할 수 있다. 이 설정은 클러스터 내 특정 노드에 할당된 Pod에서만 트래픽을 처리하도록 제한하고, 다음과 같은 특성이 있다:

    트래픽 제한: 요청을 받은 노드에 해당 Pod가 할당되지 않은 경우 트래픽은 전달되지 않는다.
    원본 IP 유지: 요청을 전달할 때 외부 클라이언트의 IP 주소가 그대로 유지된다.
    로드 밸런서 비용 절감: 불필요한 로드 밸런서 비용을 줄일 수 있다.

     

    2.2 externalTrafficPolicy: Cluster

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: default
    spec:
      type: LoadBalancer
      externalTrafficPolicy: Cluster
      selector:
        app: my-app
      ports:
      - protocol: TCP
        port: 80
        targetPort: 8080

    Cluster 옵션을 선택하면 모든 노드에서 외부 트래픽을 수신할 수 있다. 트래픽은 클러스터의 모든 노드에서 받아들이고, 각 노드는 트래픽을 해당 서비스의 Pod로 전달한다.

    트래픽 분산   :  모든 노드에서 트래픽을 받아들여, 클러스터 전체에서 트래픽이 적절히 분산된다.
    원본 IP 손실  :  트래픽이 클러스터 내부에서 라우팅될 때 원본 IP 주소가 손실될 수 있다.
    유연한 확장성:  여러 노드에서 트래픽을 받아들이므로 확장성이 높다.

     

    728x90
    TOP