16.2.6. 사용 가능한 우선순위
우선순위는 기본 설정에 따라 나머지 노드의 순위를 지정하는 규칙입니다.
스케줄러를 구성하기 위해 사용자 정의 우선순위 집합을 지정할 수 있습니다. OpenShift Container Platform에는 기본적으로 제공되는 몇 가지 우선순위가 있습니다. 특정 매개변수를 제공하여 기타 우선순위를 사용자 정의할 수 있습니다. 여러 우선순위를 결합하고 각각 서로 다른 가중치를 부여하여 우선순위 지정에 영향을 미칠 수 있습니다.
16.2.6.1. 정적 우선순위
정적 우선순위에는 가중치를 제외하고 사용자의 구성 매개변수가 사용되지 않습니다. 가중치를 지정해야 하며 0 또는 음수를 사용할 수 없습니다.
이러한 값은 스케줄러 구성(기본적으로 /etc/origin/master/scheduler.json )에 지정됩니다.
16.2.6.1.1. 기본 우선순위
기본 스케줄러 정책에는 다음과 같은 우선순위가 포함됩니다. 가중치가 10000
인 NodePreferAvoidPodsPriority
를 제외하고 각 우선순위 함수의 가중치는 1
입니다.
SelectorSpreadPriority는 서비스, RC(복제 컨트롤러),RS(복제 집합), Pod와 일치하는 상태 저장 세트를 찾은 다음 해당 선택기와 일치하는 기존 Pod를 찾습니다. 스케줄러에서는 일치하는 기존 Pod가 적은 노드를 선호합니다. 그런 다음 Pod를 예약할 때 해당 선택기와 일치하는 Pod 수가 가장 적은 노드에 Pod를 예약합니다.
{"name" : "SelectorSpreadPriority", "weight" : 1}
InterPodAffinityPriority는 weighted PodAffinityTerm의 요소를 반복하고 해당 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}
NodeAffinityPriority는 노드 유사성 스케줄링 기본 설정에 따라 노드에 우선순위를 부여합니다.
{"name" : "NodeAffinityPriority", "weight" : 1}
TaintTolerationPriority는 Pod 에 대해 허용 불가 테인트 수가 적은 노드에 우선순위를 부여합니다. 허용 불가 테인트에는 주요 PreferNoSchedule
이 있습니다.
{"name" : "TaintTolerationPriority", "weight" : 1}
16.2.6.1.2. 기타 정적 우선순위
OpenShift Container Platform에서는 다음과 같은 우선순위도 지원합니다.
EqualPriority 는 우선순위 구성이 제공되지 않는 경우 모든 노드에
동일한 가중치를 부여합니다. 이 우선순위는 테스트 환경에만 사용하는 것이 좋습니다.
{"name" : "EqualPriority", "weight" : 1}
MostRequestedPriority는 요청된 리소스가 가장 많은 노드에 우선순위를 부여합니다. 노드에 예약된 Pod에서 요청한 메모리와 CPU의 백분율을 계산하고 평균 용량 대비 요청 비율의 최댓값에 따라 우선순위를 부여합니다.
{"name" : "MostRequestedPriority", "weight" : 1}
ImageLocalityPriority는 요청된 Pod 컨테이너의 이미지가 이미 있는 노드에 우선순위를 부여합니다.
{"name" : "ImageLocalityPriority", "weight" : 1}
ServiceSpreadingPriority는 동일한 서비스에 속하는 Pod 수를 동일한 머신에 최소화하여 Pod를 확장합니다.
{"name" : "ServiceSpreadingPriority", "weight" : 1}