32.5. IP 주소 풀 광고 정보
계층 2 프로토콜, BGP 프로토콜 또는 둘 다로 IP 주소가 광고되도록 MetalLB를 구성할 수 있습니다. 계층 2에서는 MetalLB가 내결함성 외부 IP 주소를 제공합니다. BGP를 사용하면 MetalLB가 외부 IP 주소 및 로드 밸런싱에 대한 내결함성을 제공합니다.
MetalLB는 동일한 IP 주소 세트에 대해 L2 및 BGP를 사용한 광고를 지원합니다.
MetalLB는 주소 풀을 특정 BGP 피어에 효과적으로 네트워크 노드의 하위 집합에 할당할 수 있는 유연성을 제공합니다. 이렇게 하면 더 복잡한 구성을 사용할 수 있습니다(예: 노드 격리 또는 네트워크 분할).
32.5.1. BGPAdvertisement 사용자 정의 리소스 정보
BGPAdvertisements
오브젝트의 필드는 다음 표에 정의되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| BGP 광고의 이름을 지정합니다. |
|
| BGP 광고의 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다. |
|
|
선택 사항: 32비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 발표자가 BGP 피어에 알리는 경로를 집계하기 위해, 마스크는 여러 서비스 IP 주소의 경로에 적용되며, 발표자는 집계된 경로를 광고합니다. 예를 들어, 집계 길이 |
|
|
선택 사항: 128비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 예를 들어, |
|
| 선택 사항: 하나 이상의 BGP 커뮤니티를 지정합니다. 각 커뮤니티는 콜론 문자로 구분된 두 개의 16비트 값으로 지정됩니다. 잘 알려진 커뮤니티는 16비트 값으로 지정해야 합니다.
|
|
| 선택 사항: 이 알림에 대한 로컬 기본 설정을 지정합니다. 이 BGP 특성은 Autonomous System 내의 BGP 세션에 적용됩니다. |
|
|
선택 사항: 이름별로 선택되는 이 알림을 통해 광고할 |
|
|
선택 사항: 이 알림을 통해 알릴 |
|
|
선택 사항: |
|
| 선택 사항: 피어는 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
권한이 있는 사용자로 로그인합니다.
절차
IP 주소 풀을 만듭니다.
다음 예와 같은 내용으로
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
IP 주소 풀에 대한 구성을 적용합니다.
$ oc apply -f ipaddresspool.yaml
BGP 광고를 생성합니다.
다음 예와 같은 콘텐츠를 사용하여
bgpadvertisement.yaml
과 같은 파일을 생성합니다.apiVersion: metallb.io/v1beta1 kind: BGPAdvertisement metadata: name: bgpadvertisement-basic namespace: metallb-system spec: ipAddressPools: - doc-example-bgp-basic
설정을 적용합니다.
$ oc apply -f bgpadvertisement.yaml
32.5.3. BGP 광고를 사용하여 MetalLB 구성 및 고급 사용 사례
MetalLB가 203.0.113.200
및 203.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
,localPref
가100
으로 설정되고 커뮤니티가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/32
및 203.0.113.200/30
집계 경로를 수신합니다. 추가하는 각 서비스는 /30
경로를 생성하지만 MetalLB는 피어 라우터와 통신하기 전에 경로를 하나의 BGP 알림으로 중복을 제거합니다.
32.5.3.1. 예: BGP를 사용하여 고급 주소 풀 구성 알림
IPAddressPool
이 BGP 프로토콜과 함께 알려지도록 MetalLB를 다음과 같이 구성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
IP 주소 풀을 만듭니다.
다음 예와 같은 내용으로
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
IP 주소 풀에 대한 구성을 적용합니다.
$ oc apply -f ipaddresspool.yaml
BGP 광고를 생성합니다.
다음 예와 같은 콘텐츠를 사용하여
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
설정을 적용합니다.
$ oc apply -f bgpadvertisement1.yaml
다음 예와 같은 콘텐츠를 사용하여
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
설정을 적용합니다.
$ oc apply -f bgpadvertisement2.yaml
32.5.4. 노드 서브 세트에서 IP 주소 풀 광고
특정 노드 집합에서만 IP 주소 풀에서 IP 주소를 알리려면 BGPAdververtisement 사용자 정의 리소스의 .spec.nodeSelector
사양을 사용합니다. 이 사양은 IP 주소 풀을 클러스터의 노드 집합과 연결합니다. 이는 클러스터의 다른 서브넷에 노드가 있고 특정 서브넷에서 주소 풀에서 IP 주소를 알릴 때 유용합니다(예: 공용 서브넷만).
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
사용자 정의 리소스를 사용하여 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
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 주소는 NodeA
및 NodeB
의 알림만 제공합니다.
32.5.5. L2Advertisement 사용자 정의 리소스 정보
l2Advertisements
오브젝트의 필드는 다음 표에 정의되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| L2 광고의 이름을 지정합니다. |
|
| L2 광고의 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다. |
|
|
선택 사항: 이름별로 선택되는 이 알림을 통해 광고할 |
|
|
선택 사항: 이 알림을 통해 알릴 |
|
|
선택 사항: 중요 다음 홉으로 노드 제한은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오. |
32.5.6. L2 알림을 사용하여 MetalLB 구성
IPAddressPool
이 L2 프로토콜로 알려지도록 MetalLB를 다음과 같이 구성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
IP 주소 풀을 만듭니다.
다음 예와 같은 내용으로
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
IP 주소 풀에 대한 구성을 적용합니다.
$ oc apply -f ipaddresspool.yaml
L2 광고 생성.
다음 예와 같은 콘텐츠를 사용하여
l2advertisement.yaml
과 같은 파일을 생성합니다.apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: l2advertisement namespace: metallb-system spec: ipAddressPools: - doc-example-l2
설정을 적용합니다.
$ oc apply -f l2advertisement.yaml
32.5.7. L2 알림 및 라벨을 사용하여 MetalLB 구성
BGPAdvertisement
및 L2Advertisement
사용자 정의의 ipAddressPools
필드는 이름 자체 대신 IPAddressPool
에 할당된 라벨을 기반으로 IPAddressPool
을 광고에 연결하는 데 사용됩니다.
이 예에서는 ipAddressPools
필드를 구성하여 IPAddressPool
이 L2 프로토콜로 알려지도록 MetalLB를 구성하는 방법을 보여줍니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
절차
IP 주소 풀을 만듭니다.
다음 예와 같은 내용으로
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
IP 주소 풀에 대한 구성을 적용합니다.
$ oc apply -f ipaddresspool.yaml
ipAddressPoolSelectors
를 사용하여 IP를 알리는 L2 알림을 생성합니다.다음 예와 같은 콘텐츠를 사용하여
l2advertisement.yaml
과 같은 파일을 생성합니다.apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: l2advertisement-label namespace: metallb-system spec: ipAddressPoolSelectors: - matchExpressions: - key: zone operator: In values: - east
설정을 적용합니다.
$ oc apply -f l2advertisement.yaml