Menu Close

3.2.3.2. 스케줄러 우선순위 이해

우선순위는 기본 설정에 따라 노드의 순위를 정하는 규칙입니다.

스케줄러를 구성하기 위해 사용자 정의 우선순위 집합을 지정할 수 있습니다. OpenShift Container Platform에는 기본적으로 제공되는 몇 가지 우선순위가 있습니다. 특정 매개변수를 제공하여 기타 우선순위를 사용자 정의할 수 있습니다. 여러 우선순위를 결합하고 각각 서로 다른 가중치를 부여하여 우선순위 지정에 영향을 미칠 수 있습니다.

3.2.3.2.1. 정적 우선순위

정적 우선순위에는 가중치를 제외하고 사용자의 구성 매개변수가 사용되지 않습니다. 가중치를 지정해야 하며 0 또는 음수를 사용할 수 없습니다.

해당 값은 openshift-config 프로젝트의 스케줄러 정책 구성 맵에 지정됩니다.

3.2.3.2.1.1. 기본 우선순위

기본 스케줄러 정책에는 다음과 같은 우선순위가 포함됩니다. 가중치가 10000NodePreferAvoidPodsPriority를 제외하고 각 우선순위 함수의 가중치는 1입니다.

NodeAffinityPriority 우선순위는 노드 유사성 예약 설정에 따라 노드에 우선순위를 지정합니다.

{"name" : "NodeAffinityPriority", "weight" : 1}

TaintTolerationPriority 우선순위는 Pod에 대해 허용 불가 테인트 수가 적은 노드에 우선순위를 지정합니다. 허용 불가 테인트에는 주요 PreferNoSchedule이 있습니다.

{"name" : "TaintTolerationPriority", "weight" : 1}

ImageLocalityPriority 우선순위는 요청된 Pod 컨테이너의 이미지가 이미 있는 노드에 우선순위를 지정합니다.

{"name" : "ImageLocalityPriority", "weight" : 1}

SelectorSpreadPriority 우선순위는 서비스, RC(복제 컨트롤러), RS(복제 세트), Pod와 일치하는 상태 저장 세트를 찾은 다음 해당 선택기와 일치하는 기존 Pod를 찾습니다. 스케줄러에서는 일치하는 기존 Pod가 적은 노드를 선호합니다. 그런 다음 Pod를 예약할 때 해당 선택기와 일치하는 Pod 수가 가장 적은 노드에 Pod를 예약합니다.

{"name" : "SelectorSpreadPriority", "weight" : 1}

InterPodAffinityPriority 우선순위는 weightedPodAffinityTerm의 요소를 반복하고 해당 PodAffinityTerm이 해당 노드에서 충족되는 경우 합계에 가중치를 더하여 합계를 계산합니다. 합계가 가장 많은 노드를 가장 우선적으로 고려합니다.

{"name" : "InterPodAffinityPriority", "weight" : 1}

LeastRequestedPriority 우선순위는 요청된 리소스가 적은 노드를 우선 고려합니다. 노드에 예약된 Pod에서 요청한 메모리 및 CPU의 백분율을 계산하고 사용 가능한/남은 용량이 가장 많은 노드에 우선순위를 부여합니다.

{"name" : "LeastRequestedPriority", "weight" : 1}

BalancedResourceAllocation 우선순위는 리소스 사용률이 분산된 노드에 우선순위를 부여합니다. 사용한 CPU와 메모리 간의 차이를 용량의 일부로 계산하고 두 메트릭이 서로 얼마나 비슷한지에 따라 노드에 우선순위를 부여합니다. 이 우선순위는 항상 LeastRequestedPriority와 함께 사용해야 합니다.

{"name" : "BalancedResourceAllocation", "weight" : 1}

NodePreferAvoidPodsPriority 우선순위는 복제 컨트롤러 이외의 컨트롤러에서 보유하는 Pod를 무시합니다.

{"name" : "NodePreferAvoidPodsPriority", "weight" : 10000}
3.2.3.2.1.2. 기타 정적 우선순위

OpenShift Container Platform에서는 다음과 같은 우선순위도 지원합니다.

EqualPriority 우선순위는 우선순위 구성이 제공되지 않는 경우 모든 노드에 동일한 가중치인 1을 부여합니다. 이 우선순위는 테스트 환경에만 사용하는 것이 좋습니다.

{"name" : "EqualPriority", "weight" : 1}

MostRequestedPriority 우선순위는 요청된 리소스가 가장 많은 노드에 우선순위를 부여합니다. 노드에 예약된 Pod에서 요청한 메모리와 CPU의 백분율을 계산하고 평균 용량 대비 요청 비율의 최댓값에 따라 우선순위를 부여합니다.

{"name" : "MostRequestedPriority", "weight" : 1}

ServiceSpreadingPriority 우선순위는 동일한 서비스에 속하는 Pod 수를 최소화하여 동일한 머신에 Pod를 분배합니다.

{"name" : "ServiceSpreadingPriority", "weight" : 1}