-
Multiple Schedulerkubernetes/CKA 2025. 12. 5. 16:30
Multiple Scheduler
Kubernetes 클러스터에서 기본 스케줄러(kube-scheduler) 외에 추가로 커스텀 스케줄러를 여러 개 실행하여,
Pod 배치를 서로 다른 스케줄러가 분담하도록 하는 구조를 말합니다.
아주 쉽게 말하면,
기본 스케줄러 하나로 모든 Pod를 배치하지 않고,
여러 개의 스케줄러가 각각 특정 Pod를 배치하도록 역할을 나누는 것.
🔹 왜 Multiple Scheduler를 쓰나?
1) 서로 다른 스케줄링 정책을 사용하기 위해
- 기본 스케줄러는 일반적인 Load 기반 스케줄링
- 커스텀 스케줄러는 GPU 우선, 비용 우선, 데이터 지역성 우선 같은 특수 로직
➡️ 서로 다른 로직을 적용하고 싶을 때.
2) 특정 Pod만 커스텀 스케줄러로 배치하고 싶을 때
- 예: AI/ML 훈련 Pod는 GPU 우선 스케줄러
- 일반 웹 트래픽 Pod는 기본 스케줄러
➡️ Pod마다 스케줄러를 선택 가능.
3) 고성능·고가용성을 위해 스케줄링 자체를 분리
- 많은 대규모 클러스터에서 기본 스케줄러가 병목이 되는 경우
- 여러 스케줄러가 병렬로 스케줄링을 해서 성능 향상
🔹 어떻게 Pod가 어떤 스케줄러를 쓰는지?
Pod spec에서 schedulerName 필드를 사용:
apiVersion: v1 kind: Pod metadata: name: gpu-job spec: schedulerName: custom-gpu-scheduler containers: - name: gpu image: tensorflow/tensorflow:latest-gpu➡️ 이 Pod는 custom-gpu-scheduler 라는 스케줄러가 스케줄링을 담당.
🔹 Multiple Scheduler 구조
+----------------------------+ | etcd | +-------------+-------------+ | +----------+----------+ | | default-scheduler custom-scheduler-1 | | custom-scheduler-2 | | | ↓ ↓ Nodes (Worker Nodes)각 스케줄러는 API Server에서 Scheduling이 안 된 Pod를 감시하여 자신이 맡은 Pod만 찾아서 스케줄링함.
🔹 Multiple Scheduler 설정 시 중요한 점
✔ Pod는 하나의 스케줄러만 선택
(schedulerName 1개)
✔ 각 스케줄러는 충돌 없이 동작해야 한다
- 동일한 Pod를 동시에 스케줄링하면 안 됨
- 각 스케줄러가 볼 Pod를 명확히 구분해야 함
✔ Leader election(선출)이 필요할 수 있음
스케줄러가 여러 개라면 활성/대기 구조가 필요할 수 있음
'kubernetes > CKA' 카테고리의 다른 글
틀린 문제 #6. Rolling Updates and Rollbacks (0) 2025.12.10 Metric Server (0) 2025.12.08 틀린 문제 #5. Priority Classes (0) 2025.12.05 Priority Classes (0) 2025.12.05 틀린 문제 #4 Static Pod (0) 2025.12.05