4장. MetalLB로 로드 밸런싱


4.1. MetalLB 주소 풀 구성

클러스터 관리자는 주소 풀을 추가, 수정, 삭제할 수 있습니다. MetalLB Operator는 주소 풀 사용자 정의 리소스를 사용하여 MetalLB에서 서비스에 할당할 수 있는 IP 주소를 설정합니다. 예제에서 사용된 네임스페이스는 metallb-system 이라고 가정합니다.

MetalLB Operator를 설치하는 방법에 대한 자세한 내용은 MetalLB 및 MetalLB Operator 정보를 참조하세요.

4.1.1. IPAddressPool 사용자 정의 리소스에 관하여

다음 표에서는 IPAddressPool 사용자 지정 리소스의 필드에 대해 설명합니다.

Expand
표 4.1. MetalLB IPAddressPool 풀 사용자 정의 리소스
필드유형설명

metadata.name

string

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

metadata.namespace

string

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

metadata.label

string

선택 사항: IPAddressPool 에 할당된 키 값 쌍을 지정합니다. 이는 BGPAdvertisementL2Advertisement CRD의 ipAddressPoolSelectors 에서 참조되어 IPAddressPool을 광고와 연결할 수 있습니다.

spec.addresses

string

MetalLB 운영자가 서비스에 할당할 IP 주소 목록을 지정합니다. 하나의 풀에서 여러 범위를 지정할 수 있으며, 모든 범위는 동일한 설정을 공유합니다. CIDR 표기법에서 각 범위를 지정하거나 하이픈으로 구분된 시작 및 끝 IP 주소로 지정합니다.

spec.autoAssign

boolean

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

참고

IP 주소 풀 구성의 경우, 자동 할당이 활성화된 경우 충돌을 방지하기 위해 주소 필드에 다른 네트워크 장치에서 사용 가능하고 사용되지 않는 IP, 특히 게이트웨이 주소만 지정해야 합니다.

spec.avoidBuggyIPs

boolean

선택 사항: 이 기능을 활성화하면 .0.255 로 끝나는 IP 주소가 풀에서 할당되지 않습니다. 기본값은 false입니다. 일부 오래된 소비자 네트워크 장비는 실수로 .0.255 로 끝나는 IP 주소를 차단합니다.

spec.serviceAllocation 사양을 구성하여 IPAddressPool 에서 서비스 및 네임스페이스에 IP 주소를 할당할 수 있습니다.

Expand
표 4.2. MetalLB IPAddressPool 사용자 정의 리소스 사양.serviceAllocation 하위 필드
필드유형설명

priority

int

선택 사항: 두 개 이상의 IP 주소 풀이 서비스나 네임스페이스와 일치하는 경우 IP 주소 풀 간의 우선 순위를 정의합니다. 숫자가 낮을수록 우선순위가 높습니다.

네임스페이스

배열(문자열)

선택 사항: IP 주소 풀의 IP 주소에 할당할 수 있는 네임스페이스 목록을 지정합니다.

namespaceSelectors

배열(LabelSelector)

선택 사항: 목록 형식의 레이블 선택기를 사용하여 IP 주소 풀의 IP 주소에 할당할 수 있는 네임스페이스 레이블을 지정합니다.

serviceSelectors

배열(LabelSelector)

선택 사항: 목록 형식의 레이블 선택기를 사용하여 주소 풀의 IP 주소에 할당할 수 있는 서비스 레이블을 지정합니다.

4.1.2. 주소 풀 구성

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

사전 요구 사항

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

프로세스

  1. 다음 예시와 같은 내용을 담은 ipaddresspool.yaml 과 같은 파일을 만듭니다.

    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      namespace: metallb-system
      name: doc-example
      labels: 
    1
    
        zone: east
    spec:
      addresses:
      - 203.0.113.1-203.0.113.10
      - 203.0.113.65-203.0.113.75
    # ...
    Copy to Clipboard Toggle word wrap
    1
    IPAddressPool 에 할당된 이 레이블은 BGPAdvertisement CRD의 ipAddressPoolSelectors 에서 참조되어 IPAddressPool을 광고와 연결할 수 있습니다.
  2. IP 주소 풀에 대한 구성을 적용합니다.

    $ oc apply -f ipaddresspool.yaml
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 입력하여 주소 풀을 확인하세요.

    $ oc describe -n metallb-system IPAddressPool doc-example
    Copy to Clipboard Toggle word wrap

    출력 예

    Name:         doc-example
    Namespace:    metallb-system
    Labels:       zone=east
    Annotations:  <none>
    API Version:  metallb.io/v1beta1
    Kind:         IPAddressPool
    Metadata:
      ...
    Spec:
      Addresses:
        203.0.113.1-203.0.113.10
        203.0.113.65-203.0.113.75
      Auto Assign:  true
    Events:         <none>
    Copy to Clipboard Toggle word wrap

  2. doc-example 과 같은 주소 풀 이름과 IP 주소 범위가 출력에 존재하는지 확인하세요.

4.1.3. VLAN에 대한 MetalLB 주소 풀 구성

클러스터 관리자는 MetalLB가 로드 밸런서 서비스에 할당할 수 있는 생성된 VLAN의 IP 주소를 제어하기 위해 클러스터에 주소 풀을 추가할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • 별도의 VLAN을 구성합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

프로세스

  1. 다음 예와 유사한 ipaddresspool-vlan.yaml 과 같은 파일을 만듭니다.

    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    metadata:
      namespace: metallb-system
      name: doc-example-vlan
      labels:
        zone: east 
    1
    
    spec:
      addresses:
      - 192.168.100.1-192.168.100.254 
    2
    Copy to Clipboard Toggle word wrap
    1
    IPAddressPool 에 할당된 이 레이블은 BGPAdvertisement CRD의 ipAddressPoolSelectors 에서 참조되어 IPAddressPool을 광고와 연결할 수 있습니다.
    2
    이 IP 범위는 네트워크의 VLAN에 할당된 서브넷과 일치해야 합니다. 2계층(L2) 모드를 지원하려면 IP 주소 범위가 클러스터 노드와 동일한 서브넷 내에 있어야 합니다.
  2. IP 주소 풀에 대한 구성을 적용합니다.

    $ oc apply -f ipaddresspool-vlan.yaml
    Copy to Clipboard Toggle word wrap
  3. 이 구성이 VLAN에 적용되도록 하려면 spec gatewayConfig.ipForwarding을 Global 로 설정해야 합니다.

    1. 다음 명령을 실행하여 네트워크 구성 사용자 정의 리소스(CR)를 편집합니다.

      $ oc edit network.operator.openshift/cluster
      Copy to Clipboard Toggle word wrap
    2. spec.defaultNetwork.ovnKubernetesConfig 섹션을 업데이트하여 gatewayConfig.ipForwarding을 Global 로 설정합니다. 다음과 같이 보여야 합니다.

      ...
      spec:
        clusterNetwork:
          - cidr: 10.128.0.0/14
            hostPrefix: 23
        defaultNetwork:
          type: OVNKubernetes
          ovnKubernetesConfig:
            gatewayConfig:
              ipForwarding: Global
      ...
      Copy to Clipboard Toggle word wrap

4.1.4. 주소 풀 구성의 예

다음 예에서는 특정 시나리오에 대한 주소 풀 구성을 보여줍니다.

4.1.4.1. 예: IPv4 및 CIDR 범위

클래스 없는 도메인 간 라우팅(CIDR) 표기법으로 IP 주소 범위를 지정할 수 있습니다. 하이픈을 사용하는 표기법과 CIDR 표기법을 결합하여 하한 및 상한을 분리할 수 있습니다.

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: doc-example-cidr
  namespace: metallb-system
spec:
  addresses:
  - 192.168.100.0/24
  - 192.168.200.0/24
  - 192.168.255.1-192.168.255.5
# ...
Copy to Clipboard Toggle word wrap

4.1.4.2. 예: IP 주소 할당

MetalLB가 풀에서 IP 주소를 자동으로 할당하지 못하도록 autoAssign 필드를 false 로 설정할 수 있습니다. 그런 다음 IP 주소 풀에서 하나 또는 여러 개의 IP 주소를 할당할 수 있습니다. IP 주소를 할당하려면 spec.addresses 매개변수의 대상 IP 주소에 /32 CIDR 표기법을 추가합니다. 이 설정을 사용하면 특정 IP 주소만 할당이 가능하고, 예약되지 않은 IP 주소는 애플리케이션에서 사용할 수 있습니다.

여러 IP 주소를 할당하는 IPAddressPool CR 예제

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: doc-example-reserved
  namespace: metallb-system
spec:
  addresses:
  - 192.168.100.1/32
  - 192.168.200.1/32
  autoAssign: false
# ...
Copy to Clipboard Toggle word wrap

참고

서비스를 추가할 때 풀에서 특정 IP 주소를 요청하거나 주석에 풀 이름을 지정하여 풀에서 IP 주소를 요청할 수 있습니다.

4.1.4.3. 예: IPv4 및 IPv6 주소

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

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

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: doc-example-combined
  namespace: metallb-system
spec:
  addresses:
  - 10.0.100.0/28 
1

  - 2002:2:2::1-2002:2:2::100
# ...
Copy to Clipboard Toggle word wrap
1
여기서 10.0.100.0/28 은 로컬 네트워크 IP 주소이고 뒤에 /28 네트워크 접두사가 붙습니다.

4.1.4.4. 예: 서비스 또는 네임스페이스에 IP 주소 풀 할당

IPAddressPool 에서 지정한 서비스와 네임스페이스에 IP 주소를 할당할 수 있습니다.

서비스나 네임스페이스를 두 개 이상의 IP 주소 풀에 할당하는 경우 MetalLB는 우선순위가 높은 IP 주소 풀에서 사용 가능한 IP 주소를 사용합니다. 높은 우선순위를 가진 할당된 IP 주소 풀에서 사용 가능한 IP 주소가 없는 경우 MetalLB는 낮은 우선순위를 가진 IP 주소 풀이나 우선순위가 없는 IP 주소 풀에서 사용 가능한 IP 주소를 사용합니다.

참고

namespaceSelectorsserviceSelectors 사양에는 matchLabels 레이블 선택기, matchExpressions 레이블 선택기 또는 둘 다를 사용할 수 있습니다. 이 예제에서는 각 사양에 대한 하나의 레이블 선택기를 보여줍니다.

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: doc-example-service-allocation
  namespace: metallb-system
spec:
  addresses:
    - 192.168.20.0/24
  serviceAllocation:
    priority: 50 
1

    namespaces: 
2

      - namespace-a
      - namespace-b
    namespaceSelectors: 
3

      - matchLabels:
          zone: east
    serviceSelectors: 
4

      - matchExpressions:
        - key: security
          operator: In
          values:
          - S1
# ...
Copy to Clipboard Toggle word wrap
1
주소 풀에 우선순위를 지정합니다. 숫자가 낮을수록 우선순위가 높습니다.
2
IP 주소 풀에 하나 이상의 네임스페이스를 목록 형식으로 할당합니다.
3
목록 형식의 레이블 선택기를 사용하여 IP 주소 풀에 하나 이상의 네임스페이스 레이블을 할당합니다.
4
목록 형식의 레이블 선택기를 사용하여 IP 주소 풀에 하나 이상의 서비스 레이블을 할당합니다.

4.1.5. 다음 단계

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat