4일차: kube scheduler

발행: (2025년 12월 11일 오후 12:12 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

Overview

Kubernetes 스케줄러는 각 파드가 실행될 노드를 결정합니다. 스케줄러가 직접 파드를 배치하는 것이 아니라, 각 파드에 대한 대상 노드를 기록합니다. 선택된 노드의 Kubelet이 실제로 파드를 생성합니다.

Scheduler Phases

  1. Filtering (Fit Phase)
    스케줄러는 파드를 호스팅할 수 없는 노드를 제외합니다. 예를 들어:

    • 파드 사양에 명시적으로 제외된 노드.
    • 파드가 요구하는 CPU, 메모리 또는 기타 리소스가 부족한 노드.
  2. Scoring (Priority Phase)
    남은 노드들은 하나 이상의 우선순위 함수(예: 1–10 점 척도)를 사용해 점수를 매깁니다. 가장 높은 점수를 받은 노드에 파드가 스케줄됩니다.

Customization

  • 점수 계산 함수와 가중치를 사용자 정의할 수 있습니다.
  • 자체 점수 로직을 작성하여 커스텀 스케줄러를 구현할 수 있습니다.
  • 일반적인 결정 요소는 다음과 같습니다:
    • 리소스 요청 및 제한
    • Taint와 Toleration
    • Node selector
    • Affinity/anti‑affinity 규칙

Installation

  1. Kubernetes release page에서 kube-scheduler 바이너리를 다운로드합니다.
  2. 바이너리를 추출하고 적절한 디렉터리(예: /usr/local/bin)에 배치합니다.
  3. 스케줄러 구성 파일(예: /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 스케줄러는 필터링 및 점수 부여 기준을 기반으로 파드를 가장 적합한 노드에 매핑합니다. 내장 정책이나 커스텀 확장을 통해 동작을 조정할 수 있으며, 정적 파드 또는 시스템 서비스 형태로 설치하고 확인할 수 있습니다.

Back to Blog

관련 글

더 보기 »

5일차: kubelet

개요: Kubelet은 Kubernetes 비유에서 배의 선장과 같은 역할을 합니다. 클러스터에 참여하기 위해 필요한 서류를 요청하고, 단일 연락 창구 역할을 수행합니다.

3일차: kube controller manager

개요: Kube Controller Manager는 Kubernetes 클러스터 내 구성 요소들의 상태를 지속적으로 모니터링하고 원하는 상태로 만들기 위해 작업하는 다양한 컨트롤러들을 실행합니다.