검색

26.2. MetalLB Operator 설치

download PDF

클러스터 관리자는 Operator가 클러스터에서 MetalLB 인스턴스의 라이프사이클을 관리할 수 있도록 MetallB Operator를 추가할 수 있습니다.

설치 절차에서는 metallb-system 네임스페이스를 사용합니다. Operator를 설치하고 다른 네임스페이스에 사용자 정의 리소스를 구성할 수 있습니다. Operator는 Operator가 설치된 동일한 네임스페이스에서 MetalLB를 시작합니다.

MetalLB 및 IP 페일오버가 호환되지 않습니다. 클러스터에 IP 페일오버를 구성한 경우 Operator를 설치하기 전에 IP 페일오버 제거 단계를 수행합니다.

26.2.1. 웹 콘솔을 사용하여 OperatorHub에서 MetalLB Operator 설치

클러스터 관리자는 OpenShift Container Platform 웹 콘솔을 사용하여 MetalLB Operator를 설치할 수 있습니다.

절차

  1. OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 선택사항: MetalLB Operator에 필요한 네임스페이스를 생성합니다.

    참고

    이 단계에서 네임스페이스를 생성하거나 MetalLB Operator 설치를 시작할 때 이를 생성할 수 있습니다. 설치된 네임스페이스 목록에서 프로젝트를 생성할 수 있습니다.

    1. 관리 네임스페이스로 이동하여 네임스페이스 생성을 클릭합니다.
    2. 이름 필드에 metallb-system 을 입력하고 생성을 클릭합니다.
  3. MetalLB Operator를 설치합니다.

    1. OpenShift Container Platform 웹 콘솔에서 Operator OperatorHub를 클릭합니다.
    2. metallb키워드로 필터링 필드에 입력하여 MetalLB Operator를 찾은 다음 설치를 클릭합니다.

      인프라 기능에서 옵션을 필터링할 수 있습니다. 예를 들어, 연결이 끊긴 환경 (제한된 네트워크 환경이라고도 함)에서 작업하는 Operator를 표시하려면 Disconnected를 선택합니다.

    3. Operator 설치 페이지에서 클러스터의 특정 네임스페이스를 선택합니다. 이전 섹션에서 생성한 네임스페이스를 선택하거나 metallb-system 프로젝트를 생성하도록 선택한 다음 설치를 클릭합니다.

검증

MetalLB Operator가 설치되었는지 확인하려면 다음을 수행하십시오.

  1. Operator 설치된 Operator 페이지로 이동합니다.
  2. MetalLB Operatormetallb-system 프로젝트에 성공 상태로 나열되어 있는지 확인합니다.

    참고

    설치하는 동안 Operator는 실패 상태를 표시할 수 있습니다. 나중에 설치가 Succeeded 메시지와 함께 성공하면 Failed 메시지를 무시할 수 있습니다.

  3. Operator 설치에 성공하지 못하면 추가 문제를 해결할 수 있습니다.

    1. Operator 설치된 Operator 페이지로 이동하고 Operator 서브스크립션설치 계획 탭의 상태에 장애나 오류가 있는지 검사합니다.
    2. Workloads Pod 페이지로 이동하여 metallb-system 프로젝트에서 Pod 로그를 확인합니다.

26.2.2. CLI를 사용하여 OperatorHub에서 설치

OpenShift Container Platform 웹 콘솔을 사용하는 대신 CLI를 사용하여 OperatorHub에서 Operator를 설치할 수 있습니다. oc 명령을 사용하여 Subscription 개체를 만들거나 업데이트합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.

절차

  1. MetalLB Operator를 사용할 수 있는지 확인합니다.

    $ oc get packagemanifests -n openshift-marketplace metallb-operator

    출력 예

    NAME               CATALOG                AGE
    metallb-operator   Red Hat Operators      9h

  2. metallb-system 네임스페이스를 생성합니다.

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      name: metallb-system
    EOF
  3. 선택 사항: Prometheus에 BGP 및 BFD 지표가 표시되도록 하려면 다음 명령과 같이 네임스페이스에 라벨을 지정할 수 있습니다.

    $ oc label ns metallb-system "openshift.io/cluster-monitoring=true"
  4. 네임스페이스에 Operator group 사용자 정의 리소스를 생성합니다.

    $ cat << EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: metallb-operator
      namespace: metallb-system
    spec:
      targetNamespaces:
      - metallb-system
    EOF
  5. Operator group이 네임스페이스에 설치되어 있는지 확인합니다.

    $ oc get operatorgroup -n metallb-system

    출력 예

    NAME               AGE
    metallb-operator   14m

  6. MetalLB Operator에 가입합니다.

    1. 다음 명령을 실행하여 OpenShift Container Platform 주 버전 및 부 버전을 가져옵니다. 값을 사용하여 다음 단계에서 channel 값을 설정합니다.

      $ OC_VERSION=$(oc version -o yaml | grep openshiftVersion | \
          grep -o '[0-9]*[.][0-9]*' | head -1)
    2. Operator에 대한 서브스크립션 사용자 정의 리소스를 생성하려면 다음 명령을 입력합니다.

      $ cat << EOF| oc apply -f -
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: metallb-operator-sub
        namespace: metallb-system
      spec:
        channel: "${OC_VERSION}"
        name: metallb-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
      EOF
  7. 설치 계획이 네임스페이스에 있는지 확인합니다.

    $ oc get installplan -n metallb-system

    출력 예

    NAME            CSV                                                 APPROVAL    APPROVED
    install-wzg94   metallb-operator.4.10.0-nnnnnnnnnnnn   Automatic   true

  8. Operator가 설치되었는지 확인하려면 다음 명령을 입력합니다.

    $ oc get clusterserviceversion -n metallb-system \
      -o custom-columns=Name:.metadata.name,Phase:.status.phase

    출력 예

    Name                                                Phase
    metallb-operator.4.10.0-nnnnnnnnnnnn   Succeeded

26.2.3. 클러스터에서 MetalLB 시작

Operator를 설치한 후 MetalLB 사용자 정의 리소스의 단일 인스턴스를 구성해야 합니다. 사용자 정의 리소스를 구성한 후 Operator는 클러스터에서 MetalLB를 시작합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 로그인합니다.
  • MetalLB Operator를 설치합니다.

절차

  1. MetalLB 사용자 지정 리소스의 단일 인스턴스를 생성합니다.

    $ cat << EOF | oc apply -f -
    apiVersion: metallb.io/v1beta1
    kind: MetalLB
    metadata:
      name: metallb
      namespace: metallb-system
    EOF

검증

MetalLB 컨트롤러 및 MetalLB 발표자의 데몬 세트가 실행 중인지 확인합니다.

  1. 컨트롤러의 배포가 실행 중인지 확인합니다.

    $ oc get deployment -n metallb-system controller

    출력 예

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    controller   1/1     1            1           11m

  2. 발표자의 데몬 세트가 실행 중인지 확인합니다.

    $ oc get daemonset -n metallb-system speaker

    출력 예

    NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    speaker   6         6         6       6            6           kubernetes.io/os=linux   18m

    예제 출력은 6개의 발표자 pod를 나타냅니다. 클러스터의 발표자 Pod 수는 예제 출력과 다를 수 있습니다. 출력에 클러스터의 각 노드에 하나의 pod가 표시되는지 확인합니다.

26.2.3.1. 사용 가능한 Pod를 특정 노드로 제한

기본적으로 MetalLB Operator를 사용하여 MetalLB를 시작하면 Operator는 클러스터의 각 노드에서 스피커 Pod 인스턴스를 시작합니다. 사용자 Pod가 있는 노드만 로드 밸런서 IP 주소를 알릴 수 있습니다. 사용 가능한 Pod를 실행하는 노드를 지정하기 위해 노드 선택기로 MetalLB 사용자 정의 리소스를 구성할 수 있습니다.

사용 가능한 Pod를 특정 노드로 제한하는 가장 일반적인 이유는 특정 네트워크의 네트워크 인터페이스가 있는 노드만 로드 밸런서 IP 주소를 알리는 것입니다. 실행 중인 스피커 Pod가 있는 노드만 로드 밸런서 IP 주소 대상으로 표시됩니다.

스피커 Pod를 특정 노드로 제한하고 서비스의 외부 트래픽 정책에 대해 local 을 지정하는 경우 서비스의 애플리케이션 Pod가 동일한 노드에 배포되었는지 확인해야 합니다.

작업자 노드로 스피커 Pod를 제한하는 구성의 예

apiVersion: metallb.io/v1beta1
kind: MetalLB
metadata:
  name: metallb
  namespace: metallb-system
spec:
  nodeSelector:  <.>
    node-role.kubernetes.io/worker: ""
  speakerTolerations:   <.>
  - key: "Example"
    operator: "Exists"
    effect: "NoExecute"

<.> 예제 구성은 발표자 Pod를 작업자 노드에 할당하도록 지정하지만, 노드 또는 유효한 노드 선택기에 할당한 라벨을 지정할 수 있습니다. 이 예제 구성에서 Operator 를 사용하여 값과 effect 값과 일치하는 테인트를 허용하도록 이 허용 오차가 연결된 Pod를 허용할 수 있습니다.

spec.nodeSelector 필드를 사용하여 매니페스트를 적용한 후 oc get daemonset -n metallb-system speaker 명령을 사용하여 Operator가 배포한 Pod 수를 확인할 수 있습니다. 마찬가지로 oc get nodes -l node-role.kubernetes.io/worker= 와 같은 명령과 일치하는 노드를 표시할 수 있습니다.

선택 옵션으로 노드에서 선호도 규칙을 사용하여 예약해야 하는 발표자 Pod를 제어하도록 허용할 수 있습니다. 허용 오차 목록을 적용하여 이러한 Pod를 제한할 수도 있습니다. 유사성 규칙, 테인트 및 허용 오차에 대한 자세한 내용은 추가 리소스를 참조하십시오.

추가 리소스

26.2.4. 다음 단계

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.