4.2. IP 주소 풀에 대한 광고에 관하여
IP 주소가 2계층 프로토콜, BGP 프로토콜 또는 둘 다를 통해 광고되도록 MetalLB를 구성할 수 있습니다. MetalLB는 2계층을 통해 장애에 강한 외부 IP 주소를 제공합니다. MetalLB는 BGP를 사용하여 외부 IP 주소에 대한 내결함성과 부하 분산을 제공합니다.
MetalLB는 동일한 IP 주소 집합에 대해 L2 및 BGP를 사용한 광고를 지원합니다.
MetalLB는 네트워크의 노드 하위 집합에 효과적으로 특정 BGP 피어에 주소 풀을 할당할 수 있는 유연성을 제공합니다. 이를 통해 노드의 분리나 네트워크의 세분화를 용이하게 하는 등 보다 복잡한 구성이 가능해집니다.
4.2.1. BGPAdvertisement 사용자 정의 리소스에 관하여 링크 복사링크가 클립보드에 복사되었습니다!
BGPAdvertisements
개체의 필드는 다음 표에 정의되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| BGP 광고의 이름을 지정합니다. |
|
| BGP 광고에 대한 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다. |
|
|
선택 사항: 32비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 스피커가 BGP 피어에 광고하는 경로를 집계하기 위해 여러 서비스 IP 주소에 대한 경로에 마스크가 적용되고 스피커는 집계된 경로를 광고합니다. 예를 들어, 집계 길이가 |
|
|
선택 사항: 128비트 CIDR 마스크에 포함할 비트 수를 지정합니다. 예를 들어, 집계 길이가 |
|
| 선택 사항: 하나 이상의 BGP 커뮤니티를 지정합니다. 각 커뮤니티는 콜론 문자로 구분된 두 개의 16비트 값으로 지정됩니다. 잘 알려진 커뮤니티는 16비트 값으로 지정해야 합니다.
|
|
| 선택 사항: 이 광고에 대한 로컬 기본 설정을 지정합니다. 이 BGP 속성은 자율 시스템 내의 BGP 세션에 적용됩니다. |
|
|
선택 사항: 이름으로 선택된 이 광고와 함께 광고할 |
|
|
선택 사항: 이 광고를 통해 광고되는 |
|
|
선택 사항: |
|
|
선택 사항: 목록을 사용하여 MetalLB 서비스 IP 주소에 대한 광고를 수신하는 각 |
4.2.2. BGP 광고와 기본 사용 사례를 사용하여 MetalLB 구성 링크 복사링크가 클립보드에 복사되었습니다!
MetalLB를 다음과 같이 구성하여 피어 BGP 라우터가 MetalLB가 서비스에 할당한 각 로드 밸런서 IP 주소에 대해 하나의 203.0.113.200/32
경로와 하나의 fc00:f853:ccd:e799::1/128
경로를 수신하도록 합니다. localPref
및 communities
필드가 지정되지 않았으므로 경로는 localPref가
0으로 설정되고 BGP communities가 설정되지 않은 상태로 광고됩니다.
4.2.2.1. 예: BGP를 사용한 기본 주소 풀 구성 광고 링크 복사링크가 클립보드에 복사되었습니다!
IPAddressPool
이 BGP 프로토콜을 통해 광고되도록 MetalLB를 다음과 같이 구성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
IP 주소 풀을 생성합니다.
다음 예시와 같은 내용을 담은
ipaddresspool.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 주소 풀에 대한 구성을 적용합니다.
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP 광고를 생성합니다.
다음 예시와 같은 내용을 담은
bgpadvertisement.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설정을 적용합니다.
oc apply -f bgpadvertisement.yaml
$ oc apply -f bgpadvertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.3. BGP 광고 및 고급 사용 사례를 사용하여 MetalLB 구성 링크 복사링크가 클립보드에 복사되었습니다!
MetalLB가 203.0.113.200
과 203.0.113.203
사이, 그리고 fc00:f853:ccd:e799::0
과 fc00:f853:ccd:e799::f
사이의 IP 주소를 부하 분산 서비스에 할당하도록 MetalLB를 다음과 같이 구성합니다.
두 가지 BGP 광고를 설명하기 위해 MetalLB가 서비스에 IP 주소 203.0.113.200을
할당하는 경우를 생각해 보겠습니다. 예를 들어 해당 IP 주소를 사용하여 스피커는 BGP 피어에 두 가지 경로를 광고합니다.
-
203.0.113.200/32
,localPref가
100
으로 설정되고 community가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
경로는 트래픽을 클러스터와 서비스에 연결된 포드로 전달하는 데 사용됩니다.
더 많은 서비스를 추가하고 MetalLB가 풀에서 더 많은 로드 밸런서 IP 주소를 할당하면 피어 라우터는 각 서비스에 대해 하나의 로컬 경로인 203.0.113.20x/32
와 203.0.113.200/30
집계 경로를 수신합니다. 추가하는 각 서비스는 /30
경로를 생성하지만 MetalLB는 피어 라우터와 통신하기 전에 하나의 BGP 광고에 대한 경로 중복을 제거합니다.
4.2.3.1. 예: BGP를 사용한 고급 주소 풀 구성 광고 링크 복사링크가 클립보드에 복사되었습니다!
IPAddressPool
이 BGP 프로토콜을 통해 광고되도록 MetalLB를 다음과 같이 구성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
IP 주소 풀을 생성합니다.
다음 예시와 같은 내용을 담은
ipaddresspool.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 주소 풀에 대한 구성을 적용합니다.
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BGP 광고를 생성합니다.
다음 예시와 같은 내용을 담은
bgpadvertisement1.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설정을 적용합니다.
oc apply -f bgpadvertisement1.yaml
$ oc apply -f bgpadvertisement1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예시와 같은 내용을 포함하는
bgpadvertisement2.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설정을 적용합니다.
oc apply -f bgpadvertisement2.yaml
$ oc apply -f bgpadvertisement2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. 노드 하위 집합에서 IP 주소 풀 광고 링크 복사링크가 클립보드에 복사되었습니다!
IP 주소 풀에서 특정 노드 집합의 IP 주소를 광고하려면 BGPAdvertisement 사용자 지정 리소스에서 .spec.nodeSelector
사양을 사용합니다. 이 사양은 IP 주소 풀을 클러스터의 노드 집합과 연관시킵니다. 이 기능은 클러스터 내 여러 서브넷에 노드가 있고 특정 서브넷(예: 공개 서브넷)의 주소 풀에서 IP 주소를 광고하려는 경우에 유용합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
사용자 지정 리소스를 사용하여 IP 주소 풀을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BGPAdvertisement 사용자 정의 리소스에서
.spec.nodeSelector
값을 정의하여pool1
의 IP 주소가 광고되는 클러스터의 노드를 제어합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이 예에서 pool1
의 IP 주소는 NodeA
와 NodeB
에서만 광고됩니다.
4.2.5. L2Advertisement 사용자 정의 리소스에 관하여 링크 복사링크가 클립보드에 복사되었습니다!
l2Advertisements
개체의 필드는 다음 표에 정의되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| L2 광고의 이름을 지정합니다. |
|
| L2 광고에 대한 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다. |
|
|
선택 사항: 이름으로 선택된 이 광고와 함께 광고할 |
|
|
선택 사항: 이 광고를 통해 광고되는 |
|
|
선택 사항: 중요 다음 홉으로 발표할 노드를 제한하는 것은 기술 미리 보기 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오. |
|
|
선택 사항: 로드 밸런서 IP를 알리는 데 사용되는 |
4.2.6. L2 광고로 MetalLB 구성 링크 복사링크가 클립보드에 복사되었습니다!
IPAddressPool
이 L2 프로토콜을 통해 광고되도록 MetalLB를 다음과 같이 구성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
IP 주소 풀을 생성합니다.
다음 예시와 같은 내용을 담은
ipaddresspool.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 주소 풀에 대한 구성을 적용합니다.
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
L2 광고를 만드세요.
다음 예시와 같은 내용을 담은
l2advertisement.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설정을 적용합니다.
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.7. L2 광고 및 레이블을 사용하여 MetalLB 구성 링크 복사링크가 클립보드에 복사되었습니다!
BGPAdvertisement
및 L2Advertisement
사용자 지정 리소스 정의의 ipAddressPoolSelectors
필드는 이름 자체가 아닌 IPAddressPool
에 할당된 레이블을 기준으로 IPAddressPool
을 광고에 연결하는 데 사용됩니다.
이 예제에서는 ipAddressPoolSelectors
필드를 구성하여 IPAddressPool
이 L2 프로토콜을 통해 광고되도록 MetalLB를 구성하는 방법을 보여줍니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
IP 주소 풀을 생성합니다.
다음 예시와 같은 내용을 담은
ipaddresspool.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 주소 풀에 대한 구성을 적용합니다.
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ipAddressPoolSelectors를
사용하여 IP를 광고하는 L2 광고를 만듭니다.다음 예시와 같은 내용을 담은
l2advertisement.yaml
과 같은 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 설정을 적용합니다.
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.8. 선택된 인터페이스에 대한 L2 광고로 MetalLB 구성 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 서비스에 할당된 IP 주소 풀의 IP 주소는 모든 네트워크 인터페이스에서 광고됩니다. L2Advertisement
사용자 정의 리소스 정의의 인터페이스
필드는 IP 주소 풀을 광고하는 네트워크 인터페이스를 제한하는 데 사용됩니다.
이 예제에서는 모든 노드의 인터페이스
필드에 나열된 네트워크 인터페이스에서만 IP 주소 풀이 광고되도록 MetalLB를 구성하는 방법을 보여줍니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
클러스터 관리자
권한이 있는 사용자로 로그인했습니다.
프로세스
IP 주소 풀을 생성합니다.
ipaddresspool.yaml
과 같은 파일을 만들고 다음 예와 같이 구성 세부 정보를 입력합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같이 IP 주소 풀에 대한 구성을 적용합니다.
oc apply -f ipaddresspool.yaml
$ oc apply -f ipaddresspool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
인터페이스
선택기를 사용하여 IP를 광고하는 L2 광고를 만듭니다.l2advertisement.yaml
과 같은 YAML 파일을 만들고 다음 예와 같이 구성 세부 정보를 입력합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 같이 광고에 대한 구성을 적용합니다.
oc apply -f l2advertisement.yaml
$ oc apply -f l2advertisement.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
인터페이스 선택기는 MetalLB가 L2를 사용하여 주어진 IP를 알리는 노드를 선택하는 방식에 영향을 미치지 않습니다. 선택한 노드에 선택한 인터페이스가 없으면 해당 노드는 서비스를 알리지 않습니다.
4.2.9. 보조 네트워크로 MetalLB 구성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 4.14부터 기본 네트워크 동작은 네트워크 인터페이스 간에 IP 패킷 전달을 허용하지 않는 것입니다. 따라서 MetalLB가 보조 인터페이스에 구성되는 경우 필요한 인터페이스에 대해서만 IP 전달을 활성화하기 위해 머신 구성을 추가해야 합니다.
4.13에서 업그레이드된 OpenShift Container Platform 클러스터는 업그레이드 중에 글로벌 IP 전달을 활성화하는 글로벌 매개변수가 설정되므로 영향을 받지 않습니다.
보조 인터페이스에 대한 IP 전달을 활성화하려면 두 가지 옵션이 있습니다.
- 특정 인터페이스에 대한 IP 전달을 활성화합니다.
모든 인터페이스에 대해 IP 전달을 활성화합니다.
참고특정 인터페이스에 대해 IP 전달을 활성화하면 보다 세부적인 제어가 가능하지만, 모든 인터페이스에 대해 IP 전달을 활성화하면 글로벌 설정이 적용됩니다.
4.2.9.1. 특정 인터페이스에 대한 IP 전달 활성화 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
다음 명령을 실행하여 매개변수
routingViaHost를
true
로 설정하여 클러스터 네트워크 운영자를 패치합니다.oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig": {"routingViaHost": true} }}}}' --type=merge
$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig": {"routingViaHost": true} }}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfig
CR을 생성하고 적용하여bridge-net
과 같은 특정 보조 인터페이스에 대한 전달을 활성화합니다.로컬 머신에서 다음 명령을 실행하여 네트워크 커널 매개변수를 구성하는 데 사용되는 문자열을 Base64로 인코딩합니다.
echo -e "net.ipv4.conf.bridge-net.forwarding = 1\nnet.ipv6.conf.bridge-net.forwarding = 1\nnet.ipv4.conf.bridge-net.rp_filter = 0\nnet.ipv6.conf.bridge-net.rp_filter = 0" | base64 -w0
$ echo -e "net.ipv4.conf.bridge-net.forwarding = 1\nnet.ipv6.conf.bridge-net.forwarding = 1\nnet.ipv4.conf.bridge-net.rp_filter = 0\nnet.ipv6.conf.bridge-net.rp_filter = 0" | base64 -w0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
bmV0LmlwdjQuY29uZi5icmlkZ2UtbmV0LmZvcndhcmRpbmcgPSAxCm5ldC5pcHY2LmNvbmYuYnJpZGdlLW5ldC5mb3J3YXJkaW5nID0gMQpuZXQuaXB2NC5jb25mLmJyaWRnZS1uZXQucnBfZmlsdGVyID0gMApuZXQuaXB2Ni5jb25mLmJyaWRnZS1uZXQucnBfZmlsdGVyID0gMAo=
bmV0LmlwdjQuY29uZi5icmlkZ2UtbmV0LmZvcndhcmRpbmcgPSAxCm5ldC5pcHY2LmNvbmYuYnJpZGdlLW5ldC5mb3J3YXJkaW5nID0gMQpuZXQuaXB2NC5jb25mLmJyaWRnZS1uZXQucnBfZmlsdGVyID0gMApuZXQuaXB2Ni5jb25mLmJyaWRnZS1uZXQucnBfZmlsdGVyID0gMAo=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
bridge-net
이라는 지정된 보조 인터페이스에 대한 IP 전달을 활성화하기 위해MachineConfig
CR을 만듭니다. 다음 YAML을
enable-ip-forward.yaml
파일에 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 구성을 적용합니다.
oc apply -f enable-ip-forward.yaml
$ oc apply -f enable-ip-forward.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
머신 구성을 적용한 후 다음 절차에 따라 변경 사항을 확인하세요.
다음 명령을 실행하여 대상 노드에서 디버그 세션을 시작합니다.
oc debug node/<node-name>
$ oc debug node/<node-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 단계에서는
<node-name>-debug
라는 디버그 포드를 인스턴스화합니다.다음 명령을 실행하여 디버그 셸에서
/host를
루트 디렉터리로 설정합니다.chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 디버그 Pod는 Pod 내의
/host
에 호스트의 루트 파일 시스템을 마운트합니다. 루트 디렉토리를/host
로 변경하면 호스트의 실행 파일 경로에 포함된 바이너리를 실행할 수 있습니다.다음 명령을 실행하여 IP 전달이 활성화되었는지 확인하세요.
cat /etc/sysctl.d/enable-global-forwarding.conf
$ cat /etc/sysctl.d/enable-global-forwarding.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력
net.ipv4.conf.bridge-net.forwarding = 1 net.ipv6.conf.bridge-net.forwarding = 1 net.ipv4.conf.bridge-net.rp_filter = 0 net.ipv6.conf.bridge-net.rp_filter = 0
net.ipv4.conf.bridge-net.forwarding = 1 net.ipv6.conf.bridge-net.forwarding = 1 net.ipv4.conf.bridge-net.rp_filter = 0 net.ipv6.conf.bridge-net.rp_filter = 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력은
브리지-넷
인터페이스에서 IPv4 및 IPv6 패킷 전달이 활성화되었음을 나타냅니다.
4.2.9.2. 전 세계적으로 IP 전달 활성화 링크 복사링크가 클립보드에 복사되었습니다!
- 다음 명령을 실행하여 IP 전달을 전역적으로 활성화합니다.
oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge
$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge