4.2.3. BGP 광고 및 고급 사용 사례를 사용하여 MetalLB 구성
MetalLB가 203.0.113.200 과 203.0.113.203 사이의 범위에서 로드 밸런서 서비스에 IP 주소를 할당하고 fc00:f853:ccd:e799::0 및 fc00:f853:ccd:e799::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 피어에 전파합니다. 트래픽이 speaker가 있는 노드로 라우팅되는 경우203.0.113.200/32경로는 트래픽을 클러스터로 전달하고 서비스와 연결된 Pod에 사용됩니다.
더 많은 서비스를 추가하고 MetalLB는 풀에서 더 많은 로드 밸런서 IP 주소를 할당하면 피어 라우터는 각 서비스에 대해 하나의 로컬 경로와 203.0.113.200/30 집계 경로를 수신합니다. 추가하는 각 서비스는 /30 경로를 생성하지만 MetalLB는 피어 라우터와 통신하기 전에 경로를 하나의 BGP 광고에 중복시킵니다.
4.2.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: falseIP 주소 풀의 구성을 적용합니다.
$ 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