26.3. MetalLB 주소 풀 구성

클러스터 관리자는 주소 풀을 추가, 수정, 삭제할 수 있습니다. MetalLB Operator는 주소 풀 사용자 정의 리소스를 사용하여 MetalLB에서 서비스에 할당할 수 있는 IP 주소를 설정합니다.

26.3.1. 주소 풀 사용자 정의 리소스 정보

주소 풀 사용자 지정 리소스의 필드는 다음 표에 설명되어 있습니다.

표 26.1. MetalLB 주소 풀 사용자 정의 리소스

필드유형설명

metadata.name

string

주소 풀의 이름을 지정합니다. 서비스를 추가할 때 metallb.universe.tf/address-pool 주석에 이 풀 이름을 지정하여 특정 풀에서 IP 주소를 선택할 수 있습니다. 문서 전체에서 doc-example, silver, gold라는 이름이 사용됩니다.

metadata.namespace

string

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

spec.protocol

string

로드 밸런서 IP 주소를 피어 노드에 발표하는 프로토콜을 지정합니다. layer2 또는 bgp 를 지정합니다.

spec.autoAssign

boolean

선택 사항: MetalLB에서 이 풀에서 IP 주소를 자동으로 할당하는지 여부를 지정합니다. metallb.universe.tf/address-pool 주석을 사용하여 이 풀에서 IP 주소를 명시적으로 요청하려면 false 를 지정합니다. 기본값은 true입니다.

spec.addresses

array

서비스에 할당할 MetalLB의 IP 주소 목록을 지정합니다. 단일 풀에서 여러 범위를 지정할 수 있습니다. CIDR 표기법에서 각 범위를 지정하거나 하이픈으로 구분된 시작 및 끝 IP 주소로 지정합니다.

spec.bgpAdvertisements

object

선택 사항: 기본적으로 BGP 모드는 할당된 각 로드 밸런서 IP 주소를 추가 BGP 속성 없이 구성된 피어에 알립니다. 피어 라우터는 각 서비스 IP 주소에 대해 하나의 /32 경로를 수신하며 BGP 로컬 기본 설정은 0으로 설정되고 BGP 커뮤니티는 없습니다. 이 필드를 사용하여 사용자 지정 알림을 생성합니다.

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

표 26.2. BGP 알림 구성

필드유형설명

aggregationLength

integer

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

aggregationLengthV6

integer

선택 사항: 128비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 예를 들어 집계 길이가 124 인 경우 스피커는 여러 fc00:f853:0ccd:e799::x/128 서비스 IP 주소를 집계하고 단일 fc 00:f853:0ccd:e799:: 0124 경로를 알릴 수 있습니다.

커뮤니티

array

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

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

localPref

integer

선택 사항: 이 알림의 로컬 기본 설정을 지정합니다. 이 BGP 속성은 자동 시스템 내의 BGP 세션에 적용됩니다.

26.3.2. 주소 풀 구성

클러스터 관리자는 클러스터에 주소 풀을 추가하여 MetalLB가 로드 밸런서 서비스에 할당할 수 있는 IP 주소를 제어할 수 있습니다.

사전 요구 사항

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

절차

  1. 다음 예와 같은 내용을 사용하여 addresspool.yaml 과 같은 파일을 생성합니다.

    apiVersion: metallb.io/v1alpha1
    kind: AddressPool
    metadata:
      namespace: metallb-system
      name: doc-example
    spec:
      protocol: layer2
      addresses:
      - 203.0.113.1-203.0.113.10
      - 203.0.113.65-203.0.113.75
  2. 주소 풀에 대한 구성을 적용합니다.

    $ oc apply -f addresspool.yaml

검증

  • 주소 풀을 확인합니다.

    $ oc describe -n metallb-system addresspool doc-example

    출력 예

    Name:         doc-example
    Namespace:    metallb-system
    Labels:       <none>
    Annotations:  <none>
    API Version:  metallb.io/v1alpha1
    Kind:         AddressPool
    Metadata:
      ...
    Spec:
      Addresses:
        203.0.113.1-203.0.113.10
        203.0.113.65-203.0.113.75
      Auto Assign:  true
      Protocol:     layer2
    Events:         <none>

주소 풀 이름(예: doc-example ) 및 IP 주소 범위가 출력에 표시되는지 확인합니다.

26.3.3. 주소 풀 구성의 예

26.3.3.1. 예: IPv4 및 CIDR 범위

CIDR 표기법에서 IP 주소 범위를 지정할 수 있습니다. 하이픈을 사용하는 표기법과 CIDR 표기법을 결합하여 하한 및 상한을 분리할 수 있습니다.

apiVersion: metallb.io/v1beta1
kind: AddressPool
metadata:
  name: doc-example-cidr
  namespace: metallb-system
spec:
  protocol: layer2
  addresses:
  - 192.168.100.0/24
  - 192.168.200.0/24
  - 192.168.255.1-192.168.255.5

26.3.3.2. 예: IP 주소

MetalLB가 풀에서 IP 주소를 자동으로 할당하지 못하도록 autoAssign 필드를 false 로 설정할 수 있습니다. 서비스를 추가할 때 풀에서 특정 IP 주소를 요청하거나 주석에 풀 이름을 지정하여 풀에서 IP 주소를 요청할 수 있습니다.

apiVersion: metallb.io/v1beta1
kind: AddressPool
metadata:
  name: doc-example-reserved
  namespace: metallb-system
spec:
  protocol: layer2
  addresses:
  - 10.0.100.0/28
  autoAssign: false

26.3.3.3. 예: IPv4 및 IPv6 주소

IPv4 및 IPv6을 사용하는 주소 풀을 추가할 수 있습니다. 여러 IPv4 예제와 같이 주소 목록에 여러 범위를 지정할 수 있습니다.

서비스에 단일 IPv4 주소, 단일 IPv6 주소 또는 둘 다 서비스 추가 방법에 따라 결정됩니다. spec.ipFamiliesspec.ipFamilyPolicy 필드는 서비스에 IP 주소를 할당하는 방법을 제어합니다.

apiVersion: metallb.io/v1beta1
kind: AddressPool
metadata:
  name: doc-example-combined
  namespace: metallb-system
spec:
  protocol: layer2
  addresses:
  - 10.0.100.0/28
  - 2002:2:2::1-2002:2:2::100

26.3.3.4. 예: BGP 모드가 있는 단순 주소 풀

BGP 모드의 경우 프로토콜 필드를 bgp 로 설정해야 합니다. 기타 주소 풀 사용자 지정 리소스 필드(예: autoAssign )는 BGP 모드에도 적용됩니다.

다음 예에서 피어 BGP 라우터는 MetalLB가 서비스에 할당하는 각 로드 밸런서 IP 주소에 대해 하나의 203.0.113.200/32 경로와 하나의 fc00:f853:ccd:e799::1/128 경로를 수신합니다. localPref커뮤니티 필드는 지정되지 않기 때문에 localPref 에서 BGP 커뮤니티가 0으로 설정되고 BGP 커뮤니티가 없습니다.

apiVersion: metallb.io/v1beta1
kind: AddressPool
metadata:
  name: doc-example-bgp
  namespace: metallb-system
spec:
  protocol: bgp
  addresses:
    - 203.0.113.200/30
    - fc00:f853:ccd:e799::/124

26.3.3.5. 예: 사용자 지정 광고의 BGP 모드

정교한 사용자 지정 알림을 지정할 수 있습니다.

apiVersion: metallb.io/v1beta1
kind: AddressPool
metadata:
  name: doc-example-bgp-adv
  namespace: metallb-system
spec:
  protocol: bgp
  addresses:
    - 203.0.113.200/30
    - fc00:f853:ccd:e799::/124
  bgpAdvertisements:
  - communities:
    - 65535:65282
    aggregationLength: 32
    localPref: 100
  - communities:
    - 8000:800
    aggregationLength: 30
    aggregationLengthV6: 124

이전 예에서 MetalLB는 203.0.113.200 에서 203.0.113.203 사이의 범위의 로드 밸런서 서비스에 IP 주소를 할당하고 fc00:f853:ccd:e799::0 과 fc00:f853:ccd:f853:ccd:f853:ccd:f853:ccd:e799:ccd :f853:ccd:e799::f .f .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는 집계된 경로를 BGP 피어에 알리며, community 속성이 8443 :800으로 설정되어 있습니다. BGP 피어는 203.0.113.200/30 경로를 다른 BGP 피어에 전파합니다. 스피커가 있는 노드로 트래픽이 라우팅되면 203.0.113.200/32 경로는 트래픽을 클러스터 및 서비스와 연결된 포드로 전달하는 데 사용됩니다.

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

26.3.4. 다음 단계