콤퓨우터/필기: KodeKloud CKA 강의

80. Configuring Scheduler Profiles

파란화면 2024. 5. 17. 00:21
반응형

일단 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