4장. 모니터링에 대한 Pod 토폴로지 분배 제약 조건 구성
OpenShift Container Platform Pod가 여러 가용성 영역에 배포되는 경우 Pod 토폴로지 분배 제약 조건을 사용하여 Prometheus, Thanos Ruler 및 Alertmanager Pod가 네트워크 토폴로지에 분배되는 방법을 제어할 수 있습니다.
Pod 토폴로지 분배 제약 조건은 노드가 해당 영역 내의 지역 및 영역과 같은 다양한 인프라 수준에 분산되는 계층적 토폴로지 내에서 Pod 예약을 제어하는 데 적합합니다. 또한 다른 영역에서 Pod를 예약할 수 있으므로 특정 시나리오에서 네트워크 대기 시간을 개선할 수 있습니다.
4.1. Prometheus의 Pod 토폴로지 분배 제약 조건 설정
핵심 OpenShift Container Platform 플랫폼 모니터링의 경우 Prometheus에 대한 Pod 토폴로지 분배 제약 조건을 설정하여 영역 전체에서 Pod 복제본을 노드에 예약하는 방법을 미세 조정할 수 있습니다. 이렇게 하면 워크로드가 다른 데이터 센터 또는 계층 구조 영역의 노드에 분산되므로 Prometheus Pod가 가용성이 높고 더 효율적으로 실행되도록 하는 데 도움이 됩니다.
cluster-monitoring-config
구성 맵에서 Prometheus에 대한 Pod 토폴로지 분배 제약 조건을 구성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
클러스터 역할의 사용자로 클러스터에 액세스할 수 있습니다. -
cluster-monitoring-config
ConfigMap
오브젝트를 생성하셨습니다.
절차
openshift-monitoring
네임스페이스에서cluster-monitoring-config
ConfigMap
오브젝트를 편집합니다.$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
data/config.yaml/prometheusK8s
아래에 다음 설정에 대한 값을 추가하여 Pod 토폴로지 분배 제약 조건을 구성합니다.apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | prometheusK8s: topologySpreadConstraints: - maxSkew: 1 1 topologyKey: monitoring 2 whenUnsatisfiable: DoNotSchedule 3 labelSelector: matchLabels: 4 app.kubernetes.io/name: prometheus
- 1
maxSkew
에 대한 숫자 값을 지정합니다. 이 값은 균등하게 분배될 수 있는 Pod를 정의합니다. 이 필드는 필수이며 값은 0보다 커야 합니다. 지정된 값은whenUnsatisfiable
에 대해 지정하는 값에 따라 다른 영향을 미칩니다.- 2
topologyKey
의 노드 라벨 키를 지정합니다. 이 필드는 필수입니다. 이 키와 동일한 값이 있는 라벨이 있는 노드는 동일한 토폴로지에 있는 것으로 간주됩니다. 스케줄러는 균형 잡힌 수의 Pod를 각 도메인에 배치하려고 합니다.- 3
- 불만족할
수 없는 경우의 값을
지정합니다. 이 필드는 필수입니다. 사용 가능한 옵션은DoNotSchedule
및ScheduleAnyway
입니다. 대상 토폴로지에서 일치하는 Pod 수와
전역 최소값 사이에 허용되는 최대 차이를 정의하도록 하려면DoNotSchedule
을 지정합니다. 스케줄러에서 Pod를 계속 예약하지만 불일치를 줄일 수 있는 노드에 더 높은 우선 순위를 부여하려면ScheduleAnyway
를 지정합니다. - 4
matchLabels
의 값을 지정합니다. 이 값은 제약 조건을 적용할 일치하는 Pod 세트를 식별하는 데 사용됩니다.
파일을 저장하여 변경 사항을 자동으로 적용합니다.
주의cluster-monitoring-config
구성 맵에 대한 변경 사항을 저장하면openshift-monitoring
프로젝트의 Pod 및 기타 리소스가 재배포될 수 있습니다. 해당 프로젝트에서 실행 중인 모니터링 프로세스도 다시 시작할 수 있습니다.