4.12. OpenShift Container Platform 노드에서 브로커 Pod 배치 제어

노드 선택기, 허용 오차 또는 유사성 및 유사성 방지 규칙을 사용하여 OpenShift Container Platform 노드에서 AMQ Broker Pod 배치를 제어할 수 있습니다.

노드 선택기
노드 선택기를 사용하면 특정 노드에 브로커 Pod를 예약할 수 있습니다.
허용 오차
허용 오차가 노드에 구성된 테인트와 일치하는 경우 허용 오차를 노드에 예약할 수 있습니다. 일치하는 Pod 허용 오차가 없으면 테인트를 사용하면 노드가 Pod의 수락을 거부할 수 있습니다.
Affinity/Anti-affinity
노드 유사성 규칙은 노드의 라벨에 따라 Pod를 예약할 수 있는 노드를 제어합니다. Pod 유사성 및 유사성 방지 규칙은 해당 노드에서 이미 실행 중인 Pod에 따라 Pod를 예약할 수 있는 노드를 제어합니다.

4.12.1. 노드 선택기를 사용하여 특정 노드에 Pod 배치

노드 선택기는 노드 라벨에 일치하는 키-값 쌍이 있는 노드에 브로커 Pod를 예약해야 하는 키-값 쌍을 지정합니다.

다음 예제에서는 특정 노드에 브로커 Pod를 예약하도록 노드 선택기를 구성하는 방법을 보여줍니다.

사전 요구 사항

절차

  1. 기본 브로커 CRD를 기반으로 CR(사용자 정의 리소스) 인스턴스를 생성합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemis 를 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

  2. CR의 deploymentPlan 섹션에서 nodeSelector 섹션을 추가하고 Pod의 노드를 선택하려면 일치하는 노드 레이블을 추가합니다. 예를 들면 다음과 같습니다.

    spec:
        deploymentPlan:
          nodeSelector:
            app: broker1

    이 예에서 브로커 Pod는 app: broker1 라벨이 있는 노드에 예약됩니다.

  3. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.

추가 리소스

OpenShift Container Platform의 노드 선택기에 대한 자세한 내용은 OpenShift Container Platform 설명서의 노드 선택기를 사용하여 특정 노드에 Pod 배치를 참조하십시오.

4.12.2. 허용 오차를 사용하여 Pod 배치 제어

테인트 및 허용 오차는 특정 노드에서 Pod를 예약할 수 있는지 여부를 제어합니다. 테인트를 사용하면 Pod에 일치하는 톨러레이션이 없으면 노드에서 Pod 예약을 거부할 수 있습니다. 테인트를 사용하여 노드의 Pod를 제외할 수 있으므로 일치하는 톨러레이션이 있는 브로커 Pod와 같은 특정 Pod에 노드가 예약됩니다.

일치하는 톨러레이션이 있으면 브로커 Pod를 노드에 예약할 수 있지만 해당 노드에 Pod가 예약된다는 보장은 없습니다. 브로커 Pod가 테인트가 구성된 노드에 예약되도록 하려면 유사성 규칙을 구성할 수 있습니다. 자세한 내용은 다음을 참조하십시오. 4.12.3절. “유사성 및 유사성 방지 규칙을 사용하여 Pod 배치 제어”

다음 예제에서는 노드에 구성된 테인트와 일치하도록 허용 오차를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • CR 인스턴스를 사용하여 기본 브로커 배포를 생성하는 방법에 대해 잘 알고 있어야 합니다. 3.4.1절. “기본 브로커 인스턴스 배포”을 참조하십시오.
  • 브로커 Pod를 예약하기 위해 예약할 노드에 테인트를 적용합니다. 테인트는 key, value 및 effect로 구성됩니다. 테인트 효과에 따라 다음이 결정됩니다.

    • 노드의 기존 Pod 제거
    • 기존 Pod는 노드에 남아 있을 수 있지만 일치하는 허용 오차가 없는 경우 새 Pod를 예약할 수 없습니다.
    • 필요한 경우 새 Pod를 노드에 예약할 수 있지만 노드에 새 Pod를 예약하지 않는 것이 좋습니다.

테인트 적용에 대한 자세한 내용은 OpenShift Container Platform 설명서에서 노드 테인트를 사용하여 Pod 배치 제어를 참조하십시오.

절차

  1. 기본 브로커 CRD를 기반으로 CR(사용자 정의 리소스) 인스턴스를 생성합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemis 를 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

  2. CR의 deploymentPlan 섹션에 tolerations 섹션을 추가합니다. tolerations 섹션에서 일치하려는 노드 테인트에 대한 허용 오차를 추가합니다. 예를 들면 다음과 같습니다.

    spec:
         deploymentPlan:
            tolerations:
            - key: "app"
              value: "amq-broker"
              effect: "NoSchedule"

    이 예에서 톨러레이션은 app=amq-broker:NoSchedule 의 노드 테인트와 일치하므로 이 테인트가 구성된 노드에서 Pod를 예약할 수 있습니다.

참고

브로커 Pod가 올바르게 예약되도록 하려면 CR의 tolerations 섹션에 tolerationsSeconds 특성을 지정하지 마십시오.

  1. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.

추가 리소스

OpenShift Container Platform의 테인트 및 허용 오차에 대한 자세한 내용은 OpenShift Container Platform 설명서의 노드 테인트를 사용하여 Pod 배치 제어를 참조하십시오.

4.12.3. 유사성 및 유사성 방지 규칙을 사용하여 Pod 배치 제어

노드 유사성, Pod 유사성 또는 Pod 유사성 방지 규칙을 사용하여 Pod 배치를 제어할 수 있습니다. 노드 유사성을 사용하면 Pod에서 대상 노드 그룹에 대한 유사성을 지정할 수 있습니다. Pod 유사성 및 유사성 방지를 사용하면 노드에서 이미 실행중인 다른 Pod와 관련하여 Pod를 예약할 수 있거나 예약할 수 없는 방법에 대한 규칙을 지정할 수 있습니다.

4.12.3.1. 노드 유사성 규칙을 사용하여 Pod 배치 제어

노드 유사성을 사용하면 브로커 Pod에서 배치할 수 있는 노드 그룹에 대한 유사성을 지정할 수 있습니다. Pod에 생성하는 유사성 규칙과 동일한 키-값 쌍이 있는 라벨이 있는 모든 노드에 브로커 Pod를 예약할 수 있습니다.

다음 예제에서는 노드 유사성 규칙을 사용하여 Pod 배치를 제어하도록 브로커를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • CR 인스턴스를 사용하여 기본 브로커 배포를 생성하는 방법에 대해 잘 알고 있어야 합니다. 3.4.1절. “기본 브로커 인스턴스 배포”을 참조하십시오.
  • 브로커 Pod를 예약할 수 있는 OpenShift Container Platform 클러스터의 노드에 공통 레이블을 할당합니다(예: zone: emea ).

절차

  1. 기본 브로커 CRD를 기반으로 CR(사용자 정의 리소스) 인스턴스를 생성합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemis 를 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

  2. CR의 deploymentPlan 섹션에서 affinity,nodeAffinity,requiredDuringSchedulingIgnoredDuringExecution, nodeSelectorTerms 섹션을 추가합니다. nodeSelectorTerms 섹션에서 - matchExpressions 매개변수를 추가하고 일치시킬 노드 라벨의 키-값 문자열을 지정합니다. 예를 들면 다음과 같습니다.

    spec:
        deploymentPlan:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: zone
                    operator: In
                    values:
                    - emea

    이 예에서 유사성 규칙을 사용하면 zone 키 및 emea 값이 있는 라벨이 있는 모든 노드에서 Pod를 예약할 수 있습니다.

  3. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.

추가 리소스

OpenShift Container Platform의 유사성 규칙에 대한 자세한 내용은 OpenShift Container Platform 설명서의 노드 유사성 규칙을 사용하여 노드에 대한 Pod 배치 제어를 참조하십시오.

4.12.3.2. 유사성 방지 규칙을 사용하여 다른 Pod에 상대적인 Pod 배치

유사성 방지 규칙을 사용하면 해당 노드에서 이미 실행중인 Pod의 라벨에 따라 브로커 Pod를 예약할 수 있는 노드를 제한할 수 있습니다.

유사성 방지 규칙을 사용하는 사용 사례는 클러스터의 여러 브로커 Pod가 동일한 노드에 예약되지 않도록하여 단일 장애 지점을 생성하는 것입니다. Pod 배치를 제어하지 않으면 클러스터에 있는 2개 이상의 브로커 Pod를 동일한 노드에 예약할 수 있습니다.

다음 예제에서는 클러스터의 브로커 Pod 2가 동일한 노드에 예약되지 않도록 유사성 방지 규칙을 구성하는 방법을 보여줍니다.

사전 요구 사항

절차

  1. 기본 브로커 CRD를 기반으로 클러스터의 첫 번째 브로커에 대한 CR 인스턴스를 생성합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 브로커 배포의 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 브로커 배포를 위해 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemis 를 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

  2. CR의 deploymentPlan 섹션에 labels 섹션을 추가합니다. 첫 번째 브로커 Pod에 대한 식별 레이블을 생성하여 두 번째 브로커 Pod에서 유사성 방지 규칙을 생성하여 두 Pod가 동일한 노드에 예약되지 않도록 합니다. 예를 들면 다음과 같습니다.

    spec:
        deploymentPlan:
          labels:
            name: broker1
  3. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.
  4. 기본 브로커 CRD를 기반으로 클러스터에서 두 번째 브로커의 CR 인스턴스를 생성합니다.

    1. CR의 deploymentPlan 섹션에서 affinity,podAntiAffinity,requiredDuringSchedulingIgnoredDuringExecution, labelSelector 섹션을 추가합니다. labelSelector 섹션에서 - matchExpressions 매개변수를 추가하고 일치시킬 broker Pod 라벨의 키-값 문자열을 지정하므로 이 Pod는 동일한 노드에서 예약되지 않습니다.

      spec:
          deploymentPlan:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  labelSelector:
                    - matchExpressions:
                    - key: name
                      operator: In
                      values:
                        - broker1
                  topologyKey: topology.kubernetes.io/zone

      이 예에서 Pod 유사성 방지 규칙은 name 키가 있는 레이블과 클러스터의 첫 번째 브로커에 할당된 라벨인 broker1 값이 있는 Pod와 동일한 노드에 Pod를 배치하지 못하도록 합니다.

  5. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.

추가 리소스

OpenShift Container Platform의 유사성 규칙에 대한 자세한 내용은 OpenShift Container Platform 설명서의 노드 유사성 규칙을 사용하여 노드에 대한 Pod 배치 제어를 참조하십시오.