11.2. 송신 서비스 배포


송신 서비스를 배포하여 LoadBalancer 서비스 뒤의 Pod에 대한 송신 트래픽을 관리할 수 있습니다.

다음 예제에서는 LoadBalancer 서비스의 수신 IP 주소와 동일한 소스 IP 주소를 갖도록 송신 트래픽을 구성합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • MetalLB BGPPeer 리소스를 구성했습니다.

프로세스

  1. 서비스에 원하는 IP를 사용하여 IPAddressPool CR을 만듭니다.

    1. 다음 예와 같은 콘텐츠를 사용하여 ip-addr-pool.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        name: example-pool
        namespace: metallb-system
      spec:
        addresses:
        - 172.19.0.100/32
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 IP 주소 풀에 대한 구성을 적용합니다.

      $ oc apply -f ip-addr-pool.yaml
      Copy to Clipboard Toggle word wrap
  2. ServiceEgressService CR을 생성합니다.

    1. 다음 예와 같은 콘텐츠를 사용하여 service-egress-service.yaml 과 같은 파일을 생성합니다.

      apiVersion: v1
      kind: Service
      metadata:
        name: example-service
        namespace: example-namespace
        annotations:
          metallb.io/address-pool: example-pool 
      1
      
      spec:
        selector:
          app: example
        ports:
          - name: http
            protocol: TCP
            port: 8080
            targetPort: 8080
        type: LoadBalancer
      ---
      apiVersion: k8s.ovn.org/v1
      kind: EgressService
      metadata:
        name: example-service
        namespace: example-namespace
      spec:
        sourceIPBy: "LoadBalancerIP" 
      2
      
        nodeSelector: 
      3
      
          matchLabels:
            node-role.kubernetes.io/worker: ""
      Copy to Clipboard Toggle word wrap
      1
      LoadBalancer 서비스는 example-pool IP 주소 풀에서 MetalLB에서 할당한 IP 주소를 사용합니다.
      2
      이 예에서는 LoadBalancerIP 값을 사용하여 LoadBalancer 서비스의 수신 IP 주소를 송신 트래픽의 소스 IP 주소로 할당합니다.
      3
      LoadBalancerIP 값을 지정하면 단일 노드가 LoadBalancer 서비스의 트래픽을 처리합니다. 이 예에서는 worker 레이블이 있는 노드만 트래픽을 처리하도록 선택할 수 있습니다. 노드를 선택하면 OVN-Kubernetes는 다음 형식의 egress-service.k8s.ovn.org/<svc-namespace>-<svc-name>: "" 로 노드에 레이블을 지정합니다.
      참고

      sourceIPBy: "LoadBalancerIP" 설정을 사용하는 경우 BGPAdvertisement CR(사용자 정의 리소스)에 로드 밸런서 노드를 지정해야 합니다.

    2. 다음 명령을 실행하여 서비스 및 송신 서비스에 대한 구성을 적용합니다.

      $ oc apply -f service-egress-service.yaml
      Copy to Clipboard Toggle word wrap
  3. 서비스를 알리기 위해 BGPAdvertisement CR을 생성합니다.

    1. 다음 예와 같은 콘텐츠를 사용하여 service-bgp-advertisement.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: BGPAdvertisement
      metadata:
        name: example-bgp-adv
        namespace: metallb-system
      spec:
        ipAddressPools:
        - example-pool
        nodeSelectors:
        - matchLabels:
            egress-service.k8s.ovn.org/example-namespace-example-service: "" 
      1
      Copy to Clipboard Toggle word wrap
      1
      이 예에서 EgressService CR은 로드 밸런서 서비스 IP 주소를 사용하도록 송신 트래픽의 소스 IP 주소를 구성합니다. 따라서 Pod에서 시작되는 트래픽에 대해 동일한 반환 경로를 사용하도록 트래픽을 반환하려면 로드 밸런서 노드를 지정해야 합니다.

검증

  1. 다음 명령을 실행하여 MetalLB 서비스 뒤에서 실행 중인 Pod의 애플리케이션 끝점에 액세스할 수 있는지 확인합니다.

    $ curl <external_ip_address>:<port_number> 
    1
    Copy to Clipboard Toggle word wrap
    1
    애플리케이션 엔드포인트에 맞게 외부 IP 주소 및 포트 번호를 업데이트합니다.
  2. LoadBalancer 서비스의 수신 IP 주소를 송신 트래픽의 소스 IP 주소로 할당한 경우 tcpdump 와 같은 툴을 사용하여 외부 클라이언트에서 수신된 패킷을 분석하여 이 구성을 확인합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat