[CKA] 다중 스케줄러와 스케줄링 프로파일

커스텀 스케줄러를 구분해 실행하고 파드에서 선택하는 방법과 스케줄링 단계를 정리합니다.

클러스터에는 기본 스케줄러 외에 별도 이름을 가진 스케줄러를 실행할 수 있습니다. 파드는 spec.schedulerName으로 사용할 스케줄러를 선택합니다.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: my-scheduler
leaderElection:
  leaderElect: true
  resourceNamespace: kube-system
  resourceName: lock-object-my-scheduler

한 kube-scheduler 프로세스에 여러 프로파일을 두어 논리적으로 다른 스케줄러 이름을 제공할 수도 있습니다. 고가용성으로 같은 스케줄러 인스턴스를 여러 개 실행할 때는 리더 선출 설정을 사용합니다.

스케줄링 흐름은 Queue 정렬, Filtering, Scoring, Binding으로 이어집니다. PriorityClass는 대기열 순서에 영향을 주고, 필터 플러그인은 실행할 수 없는 노드를 제거하며, 점수 플러그인은 남은 노드의 순위를 정합니다. Binder가 최종 노드 할당을 API에 기록합니다.

kubectl get pods -n kube-system
kubectl get events -o wide
kubectl logs -n kube-system <scheduler-pod>