2.6. 노드 선택기를 사용하여 모니터링 구성 요소 이동

라벨이 지정된 노드와 함께 nodeSelector 제약 조건을 사용하면 모니터링 스택 구성 요소 중 하나를 특정 노드로 이동할 수 있습니다. 이렇게 하면 클러스터 전체에서 모니터링 구성 요소의 배치 및 배포를 제어할 수 있습니다.

모니터링 구성 요소의 배치 및 배포를 제어하여 시스템 리소스 사용을 최적화하고, 성능을 개선하며, 특정 요구 사항 또는 정책에 따라 워크로드를 분리할 수 있습니다.

2.6.1. 노드 선택기가 다른 제약 조건에서 작동하는 방법

노드 선택기 제약 조건을 사용하여 모니터링 구성 요소를 이동하는 경우 클러스터에 대한 Pod 예약을 제어하는 다른 제약 조건이 존재할 수 있습니다.

  • Pod 배치를 제어하기 위해 토폴로지 분배 제약 조건이 적용될 수 있습니다.
  • Prometheus, Thanos Querier, Alertmanager 및 기타 모니터링 구성 요소에 대해 하드 유사성 방지 규칙이 적용되어 이러한 구성 요소의 여러 Pod가 항상 다른 노드에 분배되므로 항상 가용성이 높아집니다.

노드에 Pod를 예약할 때 Pod 스케줄러는 Pod 배치를 결정할 때 기존 제약 조건을 모두 충족합니다. 즉, Pod 스케줄러가 어떤 노드에 배치될 Pod를 결정할 때 모든 제약 조건이 혼합됩니다.

따라서 노드 선택기 제약 조건을 구성하지만 기존 제약 조건을 모두 충족할 수 없는 경우 Pod 스케줄러는 모든 제약 조건과 일치시킬 수 없으며 노드에 배치할 Pod를 예약하지 않습니다.

모니터링 구성 요소에 대한 탄력성과 고가용성을 유지하려면 충분한 노드를 사용할 수 있는지 확인하고 구성 요소를 이동하기 위해 노드 선택기 제약 조건을 구성할 때 모든 제약 조건과 일치하는지 확인합니다.

2.6.2. 다른 노드로 모니터링 구성 요소 이동

스택 구성 요소를 실행할 클러스터의 노드를 지정하려면 노드에 할당된 라벨과 일치하도록 구성 요소의 ConfigMap 오브젝트에서 nodeSelector 제약 조건을 구성합니다.

참고

예약된 기존 Pod에 노드 선택기 제약 조건을 직접 추가할 수 없습니다.

사전 요구 사항

  • 핵심 OpenShift Container Platform 모니터링 구성 요소인 경우:

    • cluster-admin 클러스터 역할의 사용자로 클러스터에 액세스할 수 있습니다.
    • cluster-monitoring-config ConfigMap 오브젝트를 생성하셨습니다.
  • 사용자 정의 프로젝트를 모니터링하는 구성 요소를 구성하는 경우:

    • cluster-admin 클러스터 역할의 사용자로 또는 openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config-edit 역할의 사용자로 클러스터에 액세스할 수 있습니다.
    • user-workload-monitoring-config ConfigMap 오브젝트가 생성되어 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. 아직 수행하지 않은 경우 모니터링 구성 요소를 실행할 노드에 라벨을 추가합니다.

    $ oc label nodes <node-name> <node-label>
  2. ConfigMap 오브젝트를 편집합니다.

    • 핵심 OpenShift Container Platform 프로젝트를 모니터링하는 구성 요소를 이동하려면 다음을 수행합니다.

      1. openshift-monitoring 프로젝트에서 cluster-monitoring-config ConfigMap 오브젝트를 편집합니다.

        $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
      2. data/config.yaml 에서 구성 요소의 nodeSelector 제약 조건의 노드 레이블을 지정합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: cluster-monitoring-config
          namespace: openshift-monitoring
        data:
          config.yaml: |
            <component>: 1
              nodeSelector:
                <node-label-1> 2
                <node-label-2> 3
                <...>
        1
        &lt ;component& gt;를 적절한 모니터링 스택 구성 요소 이름으로 바꿉니다.
        2
        & lt;node-label-1 >을 노드에 추가한 레이블로 바꿉니다.
        3
        선택 사항: 추가 라벨을 지정합니다. 추가 라벨을 지정하면 구성 요소의 Pod는 지정된 모든 라벨이 포함된 노드에만 예약됩니다.
        참고

        nodeSelector 제약 조건을 구성한 후 모니터링 구성 요소가 Pending 상태인 경우 테인트(Taints) 및 톨러레이션(Tolerations)과 관련된 오류에 대한 Pod 이벤트를 확인합니다.

    • 사용자 정의 프로젝트를 모니터링하는 구성 요소를 이동하려면 다음을 수행합니다.

      1. openshift-user-workload-monitoring 프로젝트에서 user-workload-monitoring-config ConfigMap 오브젝트를 편집합니다.

        $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
      2. data/config.yaml 에서 구성 요소의 nodeSelector 제약 조건의 노드 레이블을 지정합니다.

        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: user-workload-monitoring-config
          namespace: openshift-user-workload-monitoring
        data:
          config.yaml: |
            <component>: 1
              nodeSelector:
                <node-label-1> 2
                <node-label-2> 3
                <...>
        1
        &lt ;component& gt;를 적절한 모니터링 스택 구성 요소 이름으로 바꿉니다.
        2
        & lt;node-label-1 >을 노드에 추가한 레이블로 바꿉니다.
        3
        선택 사항: 추가 라벨을 지정합니다. 추가 라벨을 지정하면 구성 요소의 Pod는 지정된 모든 라벨이 포함된 노드에만 예약됩니다.
        참고

        nodeSelector 제약 조건을 구성한 후 모니터링 구성 요소가 Pending 상태인 경우 테인트(Taints) 및 톨러레이션(Tolerations)과 관련된 오류에 대한 Pod 이벤트를 확인합니다.

  3. 파일을 저장하여 변경 사항을 적용합니다. 새 구성에 지정된 구성 요소가 새 노드로 자동 이동됩니다.

    참고

    클러스터 관리자가 사용자 정의 프로젝트에 대한 모니터링을 활성화하지 않는 한 user-workload-monitoring-config ConfigMap 오브젝트에 적용되는 구성이 활성화되어 있지 않습니다.

    주의

    모니터링 구성 맵에 변경 사항을 저장하면 프로젝트의 Pod 및 기타 리소스가 재배포될 수 있습니다. 해당 프로젝트에서 실행 중인 모니터링 프로세스도 다시 시작할 수 있습니다.

추가 리소스