32.5. IP 주소 풀 광고 정보

계층 2 프로토콜, BGP 프로토콜 또는 둘 다로 IP 주소가 광고되도록 MetalLB를 구성할 수 있습니다. 계층 2에서는 MetalLB가 내결함성 외부 IP 주소를 제공합니다. BGP를 사용하면 MetalLB가 외부 IP 주소 및 로드 밸런싱에 대한 내결함성을 제공합니다.

MetalLB는 동일한 IP 주소 세트에 대해 L2 및 BGP를 사용한 광고를 지원합니다.

MetalLB는 주소 풀을 특정 BGP 피어에 효과적으로 네트워크 노드의 하위 집합에 할당할 수 있는 유연성을 제공합니다. 이렇게 하면 더 복잡한 구성을 사용할 수 있습니다(예: 노드 격리 또는 네트워크 분할).

32.5.1. BGPAdvertisement 사용자 정의 리소스 정보

BGPAdvertisements 오브젝트의 필드는 다음 표에 정의되어 있습니다.

표 32.2. BGPAdvertisements 구성

필드유형설명

metadata.name

string

BGP 광고의 이름을 지정합니다.

metadata.namespace

string

BGP 광고의 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다.

spec.aggregationLength

integer

선택 사항: 32비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 발표자가 BGP 피어에 알리는 경로를 집계하기 위해, 마스크는 여러 서비스 IP 주소의 경로에 적용되며, 발표자는 집계된 경로를 광고합니다. 예를 들어, 집계 길이 24 를 사용하면 발표자는 여러 10.0.1.x/32 서비스 IP 주소를 집계하고 단일 10.0.1.0/24 경로를 알릴 수 있습니다.

spec.aggregationLengthV6

integer

선택 사항: 128비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 예를 들어, 124 의 집계 길이를 사용하면 발표자는 여러 fc00:f853:0ccd:e799::x/128 서비스 IP 주소를 집계하고 단일 fc00:f853:e799::0ccd:0/124 경로를 알릴 수 있습니다.

spec.communities

string

선택 사항: 하나 이상의 BGP 커뮤니티를 지정합니다. 각 커뮤니티는 콜론 문자로 구분된 두 개의 16비트 값으로 지정됩니다. 잘 알려진 커뮤니티는 16비트 값으로 지정해야 합니다.

  • NO_EXPORT: 65535:65281
  • NO_ADVERTISE: 65535:65282
  • NO_EXPORT_SUBCONFED: 65535:65283

    참고

    문자열과 함께 생성된 커뮤니티 오브젝트도 사용할 수 있습니다.

spec.localPref

integer

선택 사항: 이 알림에 대한 로컬 기본 설정을 지정합니다. 이 BGP 특성은 Autonomous System 내의 BGP 세션에 적용됩니다.

spec.ipAddressPools

string

선택 사항: 이름별로 선택되는 이 알림을 통해 광고할 IPAddressPools 목록입니다.

spec.ipAddressPoolSelectors

string

선택 사항: 이 알림을 통해 알릴 IPAddressPools 의 선택기입니다. 이는 이름 자체 대신 IPAddressPool 에 할당된 레이블을 기반으로 IPAddressPool 을 광고와 연결하는 것입니다. 이 목록이나 목록에 의해 IPAddressPool 이 선택되지 않은 경우 광고는 모든 IPAddressPools 에 적용됩니다.

spec.nodeSelectors

string

선택 사항: NodeSelector 를 사용하면 로드 밸런서 IP의 다음 홉으로 노드를 제한할 수 있습니다. 비어있는 경우 모든 노드가 다음 홉으로 발표됩니다.

spec.peers

string

선택 사항: 피어는 BGP 피어를 제한하여 선택한 풀의 IP를 로 알립니다. 비어있는 경우 로드 밸런서 IP는 구성된 모든 BGP 피어에 공개됩니다.

32.5.2. BGP 광고를 사용하여 MetalLB 구성 및 기본 사용 사례

피어 BGP 라우터가 서비스에 할당하는 각 로드 밸런서 IP 주소에 대해 피어 BGP 라우터가 1개의 203.0:113.200/32 경로와 fc00:f853:ccd:e799::1/128 경로를 수신하도록 다음과 같이 MetalLB를 구성합니다. localPref 및 community 필드는 지정되지 않으므로 localPref 를 사용하여 경로가 0으로 설정되고 BGP 커뮤니티가 제공되지 않습니다.

32.5.2.1. 예: BGP를 사용하여 기본 주소 풀 구성 알림

IPAddressPool 이 BGP 프로토콜과 함께 알려지도록 MetalLB를 다음과 같이 구성합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. IP 주소 풀을 만듭니다.

    1. 다음 예와 같은 내용으로 ipaddresspool.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        namespace: metallb-system
        name: doc-example-bgp-basic
      spec:
        addresses:
          - 203.0.113.200/30
          - fc00:f853:ccd:e799::/124
    2. IP 주소 풀에 대한 구성을 적용합니다.

      $ oc apply -f ipaddresspool.yaml
  2. BGP 광고를 생성합니다.

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

      apiVersion: metallb.io/v1beta1
      kind: BGPAdvertisement
      metadata:
        name: bgpadvertisement-basic
        namespace: metallb-system
      spec:
        ipAddressPools:
        - doc-example-bgp-basic
    2. 설정을 적용합니다.

      $ oc apply -f bgpadvertisement.yaml

32.5.3. BGP 광고를 사용하여 MetalLB 구성 및 고급 사용 사례

MetalLB가 203.0.113.200203.0.113.203 사이의 범위 내에서 IP 주소를 로드 밸런서 서비스에 할당하고 fc00:f853:e799: :0 및 fc00:f853:f853:e799::f853:e799::f853:e799::f853:e799::f853:e799:: f853:e799::f85 :f853:e799::f .f 의 로드 밸런서 서비스에 다음과 같이 구성합니다.

두 개의 BGP 알림을 설명하기 위해 MetalLB가 203.0.113.200 의 IP 주소를 서비스에 할당할 때 인스턴스를 고려하십시오. 이 IP 주소를 예로 사용하면, 발표자는 두 개의 경로를 BGP 피어로 알립니다.

  • 203.0.113.200/32, localPref100 으로 설정되고 커뮤니티가 NO_ADVERTISE 커뮤니티의 숫자 값으로 설정됩니다. 이 사양은 이 경로를 사용할 수 있는 피어 라우터를 나타내지만 이 경로에 대한 정보를 BGP 피어로 전달해서는 안 됩니다.
  • 203.0.113.200/30 은 MetalLB가 할당한 로드 밸런서 IP 주소를 단일 경로로 집계합니다. MetalLB는 커뮤니티 속성이 8000:800 으로 설정된 BGP 피어에 집계된 경로를 알립니다. BGP 피어는 203.0.113.200/30 경로를 다른 BGP 피어에 전파합니다. 트래픽이 발표자가 있는 노드로 라우팅되면 203.0.113.200/32 경로는 트래픽을 클러스터로 전달하고 서비스와 연결된 Pod로 트래픽을 전달하는 데 사용됩니다.

더 많은 서비스를 추가하고 MetalLB는 풀에서 더 많은 로드 밸런서 IP 주소를 할당하면 피어 라우터는 각 서비스에 대해 하나의 로컬 경로인 203.0.113.20x/32203.0.113.200/30 집계 경로를 수신합니다. 추가하는 각 서비스는 /30 경로를 생성하지만 MetalLB는 피어 라우터와 통신하기 전에 경로를 하나의 BGP 알림으로 중복을 제거합니다.

32.5.3.1. 예: BGP를 사용하여 고급 주소 풀 구성 알림

IPAddressPool 이 BGP 프로토콜과 함께 알려지도록 MetalLB를 다음과 같이 구성합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. IP 주소 풀을 만듭니다.

    1. 다음 예와 같은 내용으로 ipaddresspool.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        namespace: metallb-system
        name: doc-example-bgp-adv
        labels:
          zone: east
      spec:
        addresses:
          - 203.0.113.200/30
          - fc00:f853:ccd:e799::/124
        autoAssign: false
    2. IP 주소 풀에 대한 구성을 적용합니다.

      $ oc apply -f ipaddresspool.yaml
  2. BGP 광고를 생성합니다.

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

      apiVersion: metallb.io/v1beta1
      kind: BGPAdvertisement
      metadata:
        name: bgpadvertisement-adv-1
        namespace: metallb-system
      spec:
        ipAddressPools:
          - doc-example-bgp-adv
        communities:
          - 65535:65282
        aggregationLength: 32
        localPref: 100
    2. 설정을 적용합니다.

      $ oc apply -f bgpadvertisement1.yaml
    3. 다음 예와 같은 콘텐츠를 사용하여 bgpadvertisement2.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: BGPAdvertisement
      metadata:
        name: bgpadvertisement-adv-2
        namespace: metallb-system
      spec:
        ipAddressPools:
          - doc-example-bgp-adv
        communities:
          - 8000:800
        aggregationLength: 30
        aggregationLengthV6: 124
    4. 설정을 적용합니다.

      $ oc apply -f bgpadvertisement2.yaml

32.5.4. 노드 서브 세트에서 IP 주소 풀 광고

특정 노드 집합에서만 IP 주소 풀에서 IP 주소를 알리려면 BGPAdververtisement 사용자 정의 리소스의 .spec.nodeSelector 사양을 사용합니다. 이 사양은 IP 주소 풀을 클러스터의 노드 집합과 연결합니다. 이는 클러스터의 다른 서브넷에 노드가 있고 특정 서브넷에서 주소 풀에서 IP 주소를 알릴 때 유용합니다(예: 공용 서브넷만).

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. 사용자 정의 리소스를 사용하여 IP 주소 풀을 생성합니다.

    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      namespace: metallb-system
      name: pool1
    spec:
      addresses:
        - 4.4.4.100-4.4.4.200
        - 2001:100:4::200-2001:100:4::400
  2. BGPAdvertisement 사용자 정의 리소스에서 .spec.nodeSelector 값을 정의하여 pool1 의 IP 주소가 알리는 클러스터의 노드를 제어합니다.

    apiVersion: metallb.io/v1beta1
    kind: BGPAdvertisement
    metadata:
      name: example
    spec:
      ipAddressPools:
      - pool1
      nodeSelector:
      - matchLabels:
          kubernetes.io/hostname: NodeA
      - matchLabels:
          kubernetes.io/hostname: NodeB

이 예에서 pool1 의 IP 주소는 NodeANodeB 의 알림만 제공합니다.

32.5.5. L2Advertisement 사용자 정의 리소스 정보

l2Advertisements 오브젝트의 필드는 다음 표에 정의되어 있습니다.

표 32.3. L2 알림 구성

필드유형설명

metadata.name

string

L2 광고의 이름을 지정합니다.

metadata.namespace

string

L2 광고의 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다.

spec.ipAddressPools

string

선택 사항: 이름별로 선택되는 이 알림을 통해 광고할 IPAddressPools 목록입니다.

spec.ipAddressPoolSelectors

string

선택 사항: 이 알림을 통해 알릴 IPAddressPools 의 선택기입니다. 이는 이름 자체 대신 IPAddressPool 에 할당된 레이블을 기반으로 IPAddressPool 을 광고와 연결하는 것입니다. 이 목록이나 목록에 의해 IPAddressPool 이 선택되지 않은 경우 광고는 모든 IPAddressPools 에 적용됩니다.

spec.nodeSelectors

string

선택 사항: NodeSelector 는 로드 밸런서 IP의 다음 홉으로 노드를 제한합니다. 비어있는 경우 모든 노드가 다음 홉으로 발표됩니다.

중요

다음 홉으로 노드 제한은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

32.5.6. L2 알림을 사용하여 MetalLB 구성

IPAddressPool 이 L2 프로토콜로 알려지도록 MetalLB를 다음과 같이 구성합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. IP 주소 풀을 만듭니다.

    1. 다음 예와 같은 내용으로 ipaddresspool.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        namespace: metallb-system
        name: doc-example-l2
      spec:
        addresses:
          - 4.4.4.0/24
        autoAssign: false
    2. IP 주소 풀에 대한 구성을 적용합니다.

      $ oc apply -f ipaddresspool.yaml
  2. L2 광고 생성.

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

      apiVersion: metallb.io/v1beta1
      kind: L2Advertisement
      metadata:
        name: l2advertisement
        namespace: metallb-system
      spec:
        ipAddressPools:
         - doc-example-l2
    2. 설정을 적용합니다.

      $ oc apply -f l2advertisement.yaml

32.5.7. L2 알림 및 라벨을 사용하여 MetalLB 구성

BGPAdvertisementL2Advertisement 사용자 정의의 ipAddressPools 필드는 이름 자체 대신 IPAddressPool 에 할당된 라벨을 기반으로 IPAddressPool 을 광고에 연결하는 데 사용됩니다.

이 예에서는 ipAddressPools 필드를 구성하여 IPAddressPool 이 L2 프로토콜로 알려지도록 MetalLB를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. IP 주소 풀을 만듭니다.

    1. 다음 예와 같은 내용으로 ipaddresspool.yaml 과 같은 파일을 생성합니다.

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        namespace: metallb-system
        name: doc-example-l2-label
        labels:
          zone: east
      spec:
        addresses:
          - 172.31.249.87/32
    2. IP 주소 풀에 대한 구성을 적용합니다.

      $ oc apply -f ipaddresspool.yaml
  2. ipAddressPoolSelectors 를 사용하여 IP를 알리는 L2 알림을 생성합니다.

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

      apiVersion: metallb.io/v1beta1
      kind: L2Advertisement
      metadata:
        name: l2advertisement-label
        namespace: metallb-system
      spec:
        ipAddressPoolSelectors:
          - matchExpressions:
              - key: zone
                operator: In
                values:
                  - east
    2. 설정을 적용합니다.

      $ oc apply -f l2advertisement.yaml

32.5.8. 추가 리소스