1. 기본 개념
- 기본적으로 쿠버네티스에는 default-scheduler 가 있음.
- 이 스케줄러는 Pod 배치 시, 자원 가용성, taints/tolerations, node affinity 등을 고려해 노드를 선택.
- 하지만 특정 애플리케이션은 추가적인 조건이나 맞춤형 로직이 필요할 수 있음 → 이럴 때 커스텀 스케줄러(Custom Scheduler) 를 작성하여 배포 가능.
- 하나의 클러스터에 여러 스케줄러를 동시에 실행 가능:
- 대부분의 워크로드 → 기본 스케줄러 사용
- 특정 워크로드 → 커스텀 스케줄러 사용
2. 스케줄러 이름 지정
- 모든 스케줄러는 schedulerName 으로 구분됨.
- 기본 스케줄러 이름:
default-scheduler
- 커스텀 스케줄러 → 별도의 설정 파일(config)에서 이름 지정
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
schedulerName: my-custom-scheduler
containers:
- name: app
image: nginx
3. 배포 방식
(1) 직접 바이너리 실행
kube-scheduler 바이너리를 직접 실행하면서,
- 별도의 설정 파일(
-config) 지정
-kubeconfig 옵션으로 API 서버 접근
- 하지만 요즘은 거의 사용하지 않음 → kubeadm 환경에서는 모든 컨트롤 플레인 컴포넌트가 Pod/Deployment 형태로 실행되기 때문.
(2) Pod로 배포