5.2. MetalLB Operator 설치
클러스터 관리자는 MetalLB 운영자를 추가하여 운영자가 클러스터에서 MetalLB 인스턴스의 수명 주기를 관리할 수 있도록 할 수 있습니다.
MetalLB 및 IP 페일오버가 호환되지 않습니다. 클러스터에 IP 장애 조치를 구성한 경우 Operator를 설치하기 전에 IP 장애 조치를 제거 하는 단계를 수행합니다.
5.2.1. 웹 콘솔을 사용하여 OperatorHub에서 MetalLB Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 OpenShift Container Platform 웹 콘솔을 사용하여 MetalLB Operator를 설치할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
-
OpenShift Container Platform 웹 콘솔에서 Operator
OperatorHub로 이동합니다. 키워드로 필터링 상자에 키워드를 입력하거나 스크롤하여 원하는 운영자를 찾으세요. 예를 들어
metallb
를 입력하여 MetalLB Operator를 찾습니다.인프라 기능에서 옵션을 필터링할 수 있습니다. 예를 들어, 연결이 끊긴 환경 (제한된 네트워크 환경이라고도 함)에서 작업하는 Operator를 표시하려면 Disconnected를 선택합니다.
- Install Operator 페이지에서 기본값을 적용하고 Install을 클릭합니다.
검증
설치에 성공했는지 확인하려면 다음을 수행하십시오.
-
Operator
설치된 Operator 페이지로 이동합니다. -
Operator가
openshift-operators
네임스페이스에 설치되어 있고 상태가Succeeded
인지 확인하세요.
-
Operator
Operator가 성공적으로 설치되지 않은 경우 Operator 상태를 확인하고 로그를 검토하세요.
-
Operator
설치된 Operator 페이지로 이동하여 Status
열에 오류 또는 실패가 있는지 점검합니다. -
워크로드
포드 페이지로 이동하여 문제를 보고하는 openshift-operators
프로젝트의 모든 포드에서 로그를 확인하세요.
-
Operator
5.2.2. CLI를 사용하여 OperatorHub에서 설치 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform 웹 콘솔을 사용하는 대신 CLI를 사용하여 OperatorHub에서 Operator를 설치할 수 있습니다. OpenShift CLI( oc
)를 사용하여 MetalLB Operator를 설치할 수 있습니다.
CLI를 사용할 때는 metallb-system
네임스페이스에 Operator를 설치하는 것이 좋습니다.
사전 요구 사항
- 클러스터가 베어 메탈 하드웨어에 설치되어 있어야 합니다.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다.
프로세스
다음 명령을 입력하여 MetalLB Operator에 대한 네임스페이스를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 네임스페이스에 Operator 그룹 사용자 지정 리소스(CR)를 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator group이 네임스페이스에 설치되어 있는지 확인합니다.
oc get operatorgroup -n metallb-system
$ oc get operatorgroup -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME AGE metallb-operator 14m
NAME AGE metallb-operator 14m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구독
CR 만들기:구독
CR을 정의하고 YAML 파일(예:metallb-sub.yaml)
을 저장합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
redhat-operators
값을 지정해야 합니다.
구독
CR을 생성하려면 다음 명령을 실행하세요.oc create -f metallb-sub.yaml
$ oc create -f metallb-sub.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
선택 사항: BGP 및 BFD 메트릭이 Prometheus에 나타나도록 하려면 다음 명령과 같이 네임스페이스에 레이블을 지정할 수 있습니다.
oc label ns metallb-system "openshift.io/cluster-monitoring=true"
$ oc label ns metallb-system "openshift.io/cluster-monitoring=true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
검증 단계에서는 MetalLB Operator가 metallb-system
네임스페이스에 설치되어 있다고 가정합니다.
설치 계획이 네임스페이스에 있는지 확인합니다.
oc get installplan -n metallb-system
$ oc get installplan -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CSV APPROVAL APPROVED install-wzg94 metallb-operator.4.19.0-nnnnnnnnnnnn Automatic true
NAME CSV APPROVAL APPROVED install-wzg94 metallb-operator.4.19.0-nnnnnnnnnnnn Automatic true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고운영자 설치에는 몇 초가 걸릴 수 있습니다.
Operator가 설치되었는지 확인하려면 다음 명령을 입력한 다음 Operator에 대해 출력에
Succeeded가
표시되는지 확인하세요.oc get clusterserviceversion -n metallb-system \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
$ oc get clusterserviceversion -n metallb-system \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.3. 클러스터에서 MetalLB 시작 링크 복사링크가 클립보드에 복사되었습니다!
Operator를 설치한 후 MetalLB 사용자 정의 리소스의 단일 인스턴스를 구성해야 합니다. 사용자 정의 리소스를 구성한 후 Operator는 클러스터에서 MetalLB를 시작합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다. - MetalLB Operator를 설치합니다.
프로세스
이 절차에서는 MetalLB Operator가 metallb-system
네임스페이스에 설치되어 있다고 가정합니다. 웹 콘솔을 사용하여 설치한 경우 네임스페이스 대신 openshift-operators를
사용하세요.
MetalLB 사용자 지정 리소스의 단일 인스턴스를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
MetalLB 컨트롤러 및 MetalLB 발표자의 데몬 세트가 실행 중인지 확인합니다.
컨트롤러에 대한 배포가 실행 중인지 확인하세요.
oc get deployment -n metallb-system controller
$ oc get deployment -n metallb-system controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY UP-TO-DATE AVAILABLE AGE controller 1/1 1 1 11m
NAME READY UP-TO-DATE AVAILABLE AGE controller 1/1 1 1 11m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스피커에 대한 데몬 세트가 실행 중인지 확인하세요.
oc get daemonset -n metallb-system speaker
$ oc get daemonset -n metallb-system speaker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE speaker 6 6 6 6 6 kubernetes.io/os=linux 18m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE speaker 6 6 6 6 6 kubernetes.io/os=linux 18m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 출력은 6개의 발표자 pod를 나타냅니다. 클러스터의 발표자 Pod 수는 예제 출력과 다를 수 있습니다. 출력에 클러스터의 각 노드에 하나의 pod가 표시되는지 확인합니다.
5.2.4. MetalLB 배포 사양 링크 복사링크가 클립보드에 복사되었습니다!
MetalLB
사용자 정의 리소스를 사용하여 MetalLB 인스턴스를 시작하면 MetalLB
사용자 정의 리소스에서 배포 사양을 구성하여 컨트롤러
또는 스피커
포드가 클러스터에서 배포되고 실행되는 방식을 관리할 수 있습니다. 다음 작업을 관리하려면 이러한 배포 사양을 사용하세요.
- MetalLB Pod 배포를 위한 노드를 선택합니다.
- Pod 우선순위와 Pod 친화성을 사용하여 일정을 관리합니다.
- MetalLB 포드에 CPU 제한을 할당합니다.
- MetalLB 포드에 컨테이너 RuntimeClass를 할당합니다.
- MetalLB 포드에 대한 메타데이터를 할당합니다.
5.2.4.1. 스피커 포드를 특정 노드로 제한 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 MetalLB Operator를 사용하여 MetalLB를 시작하면 Operator는 클러스터의 각 노드에서 스피커
포드 인스턴스를 시작합니다. 스피커
포드가 있는 노드만 로드 밸런서 IP 주소를 광고할 수 있습니다. 노드 선택기를 사용하여 MetalLB
사용자 정의 리소스를 구성하여 스피커
포드를 실행할 노드를 지정할 수 있습니다.
스피커
포드를 특정 노드로 제한하는 가장 일반적인 이유는 특정 네트워크의 네트워크 인터페이스를 갖춘 노드만 로드 밸런서 IP 주소를 광고하도록 하기 위함입니다. 스피커
포드가 실행 중인 노드만 로드 밸런서 IP 주소의 대상으로 광고됩니다.
스피커
포드를 특정 노드로 제한하고 서비스의 외부 트래픽 정책에 대해 로컬을
지정하는 경우 해당 서비스의 애플리케이션 포드가 동일한 노드에 배포되었는지 확인해야 합니다.
스피커 포드를 작업자 노드로 제한하는 구성 예
spec.nodeSelector
필드로 매니페스트를 적용한 후에는 oc get daemonset -n metallb-system Speaker
명령을 사용하여 Operator가 배포한 Pod 수를 확인할 수 있습니다. 마찬가지로 oc get nodes -l node-role.kubernetes.io/worker=
와 같은 명령을 사용하면 레이블과 일치하는 노드를 표시할 수 있습니다.
선택적으로, 친화성 규칙을 사용하여 노드가 어떤 스피커 포드를 예약할지 또는 예약하지 않을지 제어할 수 있습니다. 또한 허용 목록을 적용하여 이러한 포드를 제한할 수도 있습니다. 친화성 규칙, 오염 및 허용에 대한 자세한 내용은 추가 리소스를 참조하세요.
5.2.4.2. MetalLB 배포에서 Pod 우선 순위 및 Pod 친화성 구성 링크 복사링크가 클립보드에 복사되었습니다!
MetalLB
사용자 정의 리소스를 구성하여 컨트롤러
및 스피커
포드에 포드 우선 순위 및 포드 친화성 규칙을 선택적으로 할당할 수 있습니다. 포드 우선순위는 노드에서 포드의 상대적 중요성을 나타내며 이 우선순위에 따라 포드를 예약합니다. 노드의 다른 포드보다 스케줄링 우선순위를 보장하려면 컨트롤러
나 스피커
포드에 높은 우선순위를 설정하세요.
포드 친화성은 포드 간의 관계를 관리합니다. 스케줄러가 포드 관계의 컨텍스트에서 포드를 어느 노드에 배치할지 제어하기 위해 컨트롤러
또는 스피커
포드에 포드 친화성을 할당합니다. 예를 들어, Pod 친화성 규칙을 사용하여 특정 Pod가 동일한 노드에 위치하도록 할 수 있으며, 이를 통해 네트워크 통신을 개선하고 해당 구성 요소 간의 지연 시간을 줄이는 데 도움이 될 수 있습니다.
사전 요구 사항
-
클러스터 관리자
권한이 있는 사용자로 로그인했습니다. - MetalLB Operator를 설치했습니다.
- 클러스터에서 MetalLB Operator를 시작했습니다.
프로세스
우선순위 수준을 구성하려면
myPriorityClass.yaml
과 같은PriorityClass
사용자 정의 리소스를 만듭니다. 이 예제에서는 값이1000000
인high-priority
라는PriorityClass를
정의합니다. 이 우선 순위 클래스가 할당된 Pod는 낮은 우선 순위 클래스가 할당된 Pod에 비해 스케줄링 중에 더 높은 우선 순위로 간주됩니다.apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000
apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PriorityClass
사용자 정의 리소스 구성을 적용합니다.oc apply -f myPriorityClass.yaml
$ oc apply -f myPriorityClass.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PriorityClassName
및podAffinity
값을 지정하려면MetalLBPodConfig.yaml
과 같은MetalLB
사용자 정의 리소스를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow MetalLB
사용자 정의 리소스 구성을 적용합니다.oc apply -f MetalLBPodConfig.yaml
$ oc apply -f MetalLBPodConfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
metallb-system
네임스페이스의 포드에 할당한 우선 순위 클래스를 보려면 다음 명령을 실행하세요.oc get pods -n metallb-system -o custom-columns=NAME:.metadata.name,PRIORITY:.spec.priorityClassName
$ oc get pods -n metallb-system -o custom-columns=NAME:.metadata.name,PRIORITY:.spec.priorityClassName
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME PRIORITY controller-584f5c8cd8-5zbvg high-priority metallb-operator-controller-manager-9c8d9985-szkqg <none> metallb-operator-webhook-server-c895594d4-shjgx <none> speaker-dddf7 high-priority
NAME PRIORITY controller-584f5c8cd8-5zbvg high-priority metallb-operator-controller-manager-9c8d9985-szkqg <none> metallb-operator-webhook-server-c895594d4-shjgx <none> speaker-dddf7 high-priority
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스케줄러가 Pod 친화성 규칙에 따라 Pod를 배치했는지 확인하려면 다음 명령을 실행하여 Pod 노드에 대한 메타데이터를 확인하세요.
oc get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name -n metallb-system
$ oc get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name -n metallb-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.4.3. MetalLB 배포에서 Pod CPU 제한 구성 링크 복사링크가 클립보드에 복사되었습니다!
MetalLB
사용자 정의 리소스를 구성하여 컨트롤러
및 스피커
포드에 포드 CPU 제한을 선택적으로 할당할 수 있습니다. 컨트롤러
또는 스피커
포드에 대한 CPU 제한을 정의하면 노드의 컴퓨팅 리소스를 관리하는 데 도움이 됩니다. 이를 통해 노드의 모든 포드가 작업 부하와 클러스터 정리를 관리하는 데 필요한 컴퓨팅 리소스를 확보할 수 있습니다.
사전 요구 사항
-
클러스터 관리자
권한이 있는 사용자로 로그인했습니다. - MetalLB Operator를 설치했습니다.
프로세스
컨트롤러
와스피커
포드의CPU
값을 지정하려면CPULimits.yaml
과 같은MetalLB
사용자 정의 리소스 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow MetalLB
사용자 정의 리소스 구성을 적용합니다.oc apply -f CPULimits.yaml
$ oc apply -f CPULimits.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
포드의 컴퓨팅 리소스를 보려면 다음 명령을 실행하고
<pod_name>을
대상 포드로 바꿉니다.oc describe pod <pod_name>
$ oc describe pod <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow