반응형
일단 Pod이 생성되면 Scheduling Queue에 들어가게 된다
- 그 다음 Pod에 선언된
spec.priorityClassName
에 의해 정렬된다.- PrioritySort 플러그인에 의해 처리
그 다음엔 필터링 단계에 들어가게 된다.
- Pod을 구동할 수 없는 노드(Affinity, Tint, Resource 등의 제한)들은 튕겨나간다.
- NodeResourceFit, NodeName, NodeUnschedulable 플러그인 등에 의해 처리
그 다음엔 스코어링 단계이다.
- 해당 Pod가 차지하는 공간을 제외하고 남는 free space의 크기에 따라 점수 부여
- 남는 free space가 클수록 높은 점수가 나온다
- NodeResourcesFit, ImageLocality 플러그인에 의해 처리
- ImageLocality: 컨테이너이미지를 이미 갖고 있는 노드에 가점 부여
- 지금은 필터링이 끝난 단계이므로, 노드들의 점수가 형편없더라도 아무튼 배치는 된다.
그런 뒤 가장 높은 점수를 가진 노드에 Binding되게 된다.
- DefaultBinder 플러그인에 의해 처리
Scheduling Extension의 사용자화
Extension Point라는 것이 있다
- queueSort, preFilter, filter, postFilter, preScore, score, reserve, permit, preBind, bind, postBind...
Scheduler Profile
쿠버 1.18에서 추가된 기능
기존에는, 여러 스케줄러가 동시에 Pod를 배치하려다가 Race Condition에 걸린다든가 하는 문제가 있었다.
- 이에, 하나의 스케줄러에서 여러 가지의 "프로파일"을 가지도록 한 것
apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeschedulerConfiguration
profiles:
- schedulerName: my-scheduler-2
plugins:
score:
disabled:
- name: TaintToleration
enabled:
- name: MyCustomPluginA
- name: MyCustomPluginB
- schedulerName: my-scheduler-3
plugins:
preScore:
disabled:
- name: '*'
반응형
'콤퓨우터 > 필기: KodeKloud CKA 강의' 카테고리의 다른 글
92. Rolling Updates and Rollbacks (0) | 2024.05.17 |
---|---|
84-87. Monitor Cluster Components, Managing Application Logs (0) | 2024.05.17 |
74. Static Pods (0) | 2024.05.17 |
71. DaemonSet (0) | 2024.05.17 |
67. Resource Requests and Limits (0) | 2024.05.14 |