4일차: kube scheduler
Source: Dev.to
Overview
Kubernetes 스케줄러는 각 파드가 실행될 노드를 결정합니다. 스케줄러가 직접 파드를 배치하는 것이 아니라, 각 파드에 대한 대상 노드를 기록합니다. 선택된 노드의 Kubelet이 실제로 파드를 생성합니다.
Scheduler Phases
-
Filtering (Fit Phase)
스케줄러는 파드를 호스팅할 수 없는 노드를 제외합니다. 예를 들어:- 파드 사양에 명시적으로 제외된 노드.
- 파드가 요구하는 CPU, 메모리 또는 기타 리소스가 부족한 노드.
-
Scoring (Priority Phase)
남은 노드들은 하나 이상의 우선순위 함수(예: 1–10 점 척도)를 사용해 점수를 매깁니다. 가장 높은 점수를 받은 노드에 파드가 스케줄됩니다.
Customization
- 점수 계산 함수와 가중치를 사용자 정의할 수 있습니다.
- 자체 점수 로직을 작성하여 커스텀 스케줄러를 구현할 수 있습니다.
- 일반적인 결정 요소는 다음과 같습니다:
- 리소스 요청 및 제한
- Taint와 Toleration
- Node selector
- Affinity/anti‑affinity 규칙
Installation
- Kubernetes release page에서
kube-scheduler바이너리를 다운로드합니다. - 바이너리를 추출하고 적절한 디렉터리(예:
/usr/local/bin)에 배치합니다. - 스케줄러 구성 파일(예:
/etc/kubernetes/scheduler-config.yaml)을 지정하여 서비스로 실행합니다.
# Example: start kube-scheduler with a config file
kube-scheduler --config=/etc/kubernetes/scheduler-config.yaml
Viewing the Scheduler
- 정적 파드로:
kubeadm으로 배포할 경우 스케줄러는kube-system네임스페이스의 파드로 실행됩니다. 매니페스트는/etc/kubernetes/manifests/kube-scheduler.yaml에 위치합니다. - 프로세스로: 실행 중인 스케줄러 프로세스를 다음 명령으로 찾을 수 있습니다:
ps aux | grep kube-scheduler
Summary
Kubernetes 스케줄러는 필터링 및 점수 부여 기준을 기반으로 파드를 가장 적합한 노드에 매핑합니다. 내장 정책이나 커스텀 확장을 통해 동작을 조정할 수 있으며, 정적 파드 또는 시스템 서비스 형태로 설치하고 확인할 수 있습니다.