28장. MetalLB로 로드 밸런싱
28.1. MetalLB 주소 풀 구성
클러스터 관리자는 주소 풀을 추가, 수정, 삭제할 수 있습니다. MetalLB Operator는 주소 풀 사용자 정의 리소스를 사용하여 MetalLB에서 서비스에 할당할 수 있는 IP 주소를 설정합니다. 예제에 사용되는 네임스페이스는 네임스페이스가 metallb-system
이라고 가정합니다.
MetalLB Operator를 설치하는 방법에 대한 자세한 내용은 MetalLB 및 MetalLB Operator 정보를 참조하십시오.
28.1.1. IPAddressPool 사용자 정의 리소스 정보
IPAddressPool
사용자 정의 리소스의 필드는 다음 표에 설명되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
주소 풀의 이름을 지정합니다. 서비스를 추가할 때 |
|
| 주소 풀의 네임스페이스를 지정합니다. MetalLB Operator에서 사용하는 동일한 네임스페이스를 지정합니다. |
|
|
선택 사항: |
|
| 서비스에 할당할 MetalLB Operator의 IP 주소 목록을 지정합니다. 단일 풀에서 여러 범위를 지정할 수 있으며 모두 동일한 설정을 공유합니다. CIDR 표기법에서 각 범위를 지정하거나 하이픈으로 구분된 시작 및 끝 IP 주소로 지정합니다. |
|
|
선택 사항: MetalLB에서 이 풀에서 IP 주소를 자동으로 할당하는지 여부를 지정합니다. |
|
|
선택 사항: IP 주소가 .0 및 .255로 끝나는 경우 풀에서 할당되지 않도록 합니다. 기본값은 |
spec.serviceAllocation
사양을 구성하여 IPAddressPool
의 IP 주소를 서비스 및 네임스페이스에 할당할 수 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
| 선택 사항: 두 개 이상의 IP 주소 풀이 서비스 또는 네임스페이스와 일치하는 경우 IP 주소 풀 간의 우선 순위를 정의합니다. 더 낮은 숫자는 더 높은 우선 순위를 나타냅니다. |
|
| 선택 사항: IP 주소 풀의 IP 주소에 할당할 수 있는 네임스페이스 목록을 지정합니다. |
|
| 선택 사항: 목록 형식의 라벨 선택기를 사용하여 IP 주소 풀에서 IP 주소에 할당할 수 있는 네임스페이스 레이블을 지정합니다. |
|
| 선택 사항: 목록 형식의 라벨 선택기를 사용하여 주소 풀에서 IP 주소에 할당할 수 있는 서비스 레이블을 지정합니다. |
28.1.2. 주소 풀 구성
클러스터 관리자는 클러스터에 주소 풀을 추가하여 MetalLB에서 로드 밸런서 서비스에 할당할 수 있는 IP 주소를 제어할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
다음 예와 같은 콘텐츠를 사용하여
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
- 1
IPAddressPool
에 할당된 이 레이블은BGPAdvertisement
CRD의ipAddressPoolSelectors
에서 참조하여IPAddressPool
을 광고와 연결할 수 있습니다.
IP 주소 풀의 구성을 적용합니다.
$ oc apply -f ipaddresspool.yaml
검증
주소 풀을 확인합니다.
$ oc describe -n metallb-system IPAddressPool doc-example
출력 예
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>
주소 풀 이름(예: doc-example
) 및 IP 주소 범위가 출력에 표시되는지 확인합니다.
28.1.3. VLAN의 MetalLB 주소 풀 구성
클러스터 관리자는 클러스터에 주소 풀을 추가하여 MetalLB에서 로드 밸런서 서비스에 할당할 수 있는 생성된 VLAN의 IP 주소를 제어할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. - 별도의 VLAN을 구성합니다.
-
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
다음 예와 유사한
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
IP 주소 풀의 구성을 적용합니다.
$ oc apply -f ipaddresspool-vlan.yaml
이 구성이 VLAN에 적용되도록 하려면
사양
gatewayConfig.ipForwarding
을Global
로 설정해야 합니다.다음 명령을 실행하여 네트워크 구성 CR(사용자 정의 리소스)을 편집합니다.
$ oc edit network.config.openshift/cluster
gatewayConfig.ipForwarding
을Global
로 설정하도록spec.defaultNetwork.ovnKubernetesConfig
섹션을 업데이트합니다. 다음과 같이 표시됩니다.예제
... spec: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: gatewayConfig: ipForwarding: Global ...
28.1.4. 주소 풀 구성의 예
28.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
28.1.4.2. 예: IP 주소
MetalLB가 풀에서 IP 주소를 자동으로 할당하지 못하도록 autoAssign
필드를 false
로 설정할 수 있습니다. 서비스를 추가할 때 풀에서 특정 IP 주소를 요청하거나 주석에 풀 이름을 지정하여 풀에서 IP 주소를 요청할 수 있습니다.
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: doc-example-reserved namespace: metallb-system spec: addresses: - 10.0.100.0/28 autoAssign: false
28.1.4.3. 예: IPv4 및 IPv6 주소
IPv4 및 IPv6을 사용하는 주소 풀을 추가할 수 있습니다. 여러 IPv4 예제와 마찬가지로 address
목록에 여러 범위를 지정할 수 있습니다.
서비스에 단일 IPv4 주소, 단일 IPv6 주소 또는 둘 다에 할당되었는지 여부는 서비스 추가 방법에 따라 결정됩니다. spec.ipFamilies
및 spec.ipFamilyPolicy
필드는 서비스에 IP 주소를 할당하는 방법을 제어합니다.
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: doc-example-combined namespace: metallb-system spec: addresses: - 10.0.100.0/28 - 2002:2:2::1-2002:2:2::100
28.1.4.4. 예: 서비스 또는 네임스페이스에 IP 주소 풀 할당
IPAddressPool
의 IP 주소를 지정한 서비스 및 네임스페이스에 할당할 수 있습니다.
둘 이상의 IP 주소 풀에 서비스 또는 네임스페이스를 할당하는 경우 MetalLB는 우선순위가 높은 IP 주소 풀에서 사용 가능한 IP 주소를 사용합니다. 우선 순위가 높은 할당된 IP 주소 풀에서 사용할 수 있는 IP 주소가 없는 경우 MetalLB는 우선 순위가 낮거나 우선순위가 없는 IP 주소 풀의 사용 가능한 IP 주소를 사용합니다.
matchLabels
라벨 선택기, matchExpressions
라벨 선택기 또는 둘 다 namespaceSelectors
및 serviceSelectors
사양에 사용할 수 있습니다. 이 예제에서는 각 사양에 대한 하나의 라벨 선택기를 보여줍니다.
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