카테고리 없음
(TIL) Kubernetes Custom Scheduler
심플코더
2025. 3. 28. 22:53
Kubernetes Multiple Schedulers
Kubernetes에는 기본적으로 default-scheduler가 존재한다.
하지만 특정 서비스에 대해 다른 스케줄링 알고리즘, 비즈니스 로직 기반 배치, 커스텀 스케줄링 로직등을 사용하고 싶을 수 있다.
이를 위해 우리는 Multiple Scheduler, 다른 말로 Custom Scheduler를 구성할 수 있다.
Custom Scheduler 생성 방법
1. kube-scheduler binary
kube-scheduler라는 프로그램(바이너리 파일)을 사용해서 스케줄러를 추가로 실행시킬 수 있다.
`/usr/local/bin/kube-scheduler --config=/etc/kubernetes/custom-scheduler.yaml`
위와 같이 실행하면, custom-scheduler.yaml 파일을 사용해서 추가적인 스케줄러를 실행시킬 수 있음
2. 실행할 Pod 혹은 Deployment에서 schedulerName을 명시한다.
apiVersion: v1
kind: Pod
metadata:
name: custom-scheduler
namespace: kube-system
spec:
containers:
- name: custom-scheduler
image: k8s.gcr.io/kube-scheduler:v1.28.0
command:
- kube-scheduler
- --scheduler-name=custom-scheduler
- --leader-elect=false
- --kubeconfig=/etc/kubernetes/my-scheduler-config.yaml
Pod가 특정 스케줄러를 선택하도록 하는 방법
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
schedulerName: my-custom-scheduler
Pod 정의에서 schedulerName을 명시해주면된다.
스케줄링 과정에서 어떤 스케줄러가 선택되었는지는
kubectl get events -o wide 명령어를 통해 확인할 수 있다.
또는 kubectl logs my-custom-scheduler -n kube-system 명령어를 통해 직접 스케줄러 로그를 확인할 수도 있다.