카테고리 없음

(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 명령어를 통해 직접 스케줄러 로그를 확인할 수도 있다.