처음은 정렬 단계이다. 파드들은 스케줄링 될 때, 노드에 스케줄 되는 것을 기다린다.
파드는 생성될 때, 우선순위가 정해져 있다. 이는 파드 정의 파일에서 필드로 정의할 수 있다.
우선순위 클래스를 생성하고, 우선순위 값을 설정해야 한다. 파드의 우선순위 필드에서는 해당 클래스를 불러와 우선순위를 적용한다.
이렇게 우선순위를 적용하면, value가 높은 파드부터 스케줄링이 우선으로 노드에 배정된다.
다음은 필터링 단계이다. 파드를 실행할 수 없는 노드는 이 단계에서 배제된다.
리소스 부족, 적합하지 않은 조건 등에 따라 파드에 맞는 노드를 "필터링" 하는 단계이다.
다음은 스코어링을 진행한다.
선별된 노드들에 점수를 매겨 가장 적합한 노드를 최종 결정한다.
마지막 바인딩 단계에서 최종 결정된 노드에 파드를 배정한다.
위의 모든 과정은 플러그인으로 이루어진다. 아래와 같은 플러그인이 있다.
Scheduling Queue
- PrioritySort : 파드를 분류하는 우선순위 플러그인은 파드에서 설정된 기준에 따라 정렬한다.
필터링
- NodeResourcesFit : 플러그인에 맞는 노드 자원이 있어 파드에서 요구하는 자원이 충분한 노드를 식별, 부족한 노드를 필터링
- NodeName : 파드 정의 파일에서 지정된 nodeName이 있는지 확인, 이름에 맞는 노드에 파드를 할당하기 위함이다.
- NodeUnschedulable : Unschedulable 필드가 true로 설정된 노드를 필터링한다.
스코어링
- NodeResourcesFit : 노드에 사용 가능한 리소스에 따라 점수 부여
- ImageLocality : 컨테이너 이미지를 가진 노드에 높은 점수를 부여
바인딩
- DefaultBinder : 바인딩 메커니즘(노드에 파드 할당) 플러그인 제공
이외에도, 다양한 확장 플러그인을 제공한다.
몇몇 플러그인들은 특정 단계에서 소속되는 것이 아닌 여러 단계에 걸쳐 동작하는 플러그인들도 있다.
이러한 플러그인들을 조합하여, 본인만의 플러그인 조합을 생성할 수도 있다. 각 플러그인들을 연결하면 된다.
config 파일로 사용자 지정 스케줄러를 정의할 때, 스케줄러에 플러그인을 추가함으로써 활용할 수 있다.
각 스케줄러는 여러 개의 프로파일을 가질 수 있고, 스케줄러들은 별개로 동작한다. 동시에 실행되지만, 따로 동작하는 것이다.
각 스케줄러가 다르게 작동하도록 구성하는 방법은, config 파일로 스케줄러 정의할 때, 플러그인의 필드를 지정함으로써 구성할 수 있다.
'IT > CKA' 카테고리의 다른 글
CKA 준비과정 - Application Lifecycle Management (1) / 업데이트 & 롤백 (0) | 2023.05.29 |
---|---|
CKA 준비과정 - Logging & Monitoring / Monitor Cluster Components, Logging (0) | 2023.05.29 |
CKA 준비과정 - Scheduling (7) / Multiple Scheduler (0) | 2023.05.22 |
CKA 준비과정 - Scheduling (6) / DaemonSets, Static Pods (0) | 2023.05.20 |
CKA 준비과정 - Scheduling (5) / 리소스 요구사항과 한도 (0) | 2023.05.20 |