본문 바로가기

⭐ Kubernetes & EKS/Scheduler (스케줄러)

Kube Scheduler (Kube 스케줄러)

반응형

# Kube 스케줄러란?

쿠버네티스 스케줄링은 쿠버네티스 클러스터 내에서 포드(Pod)를 적절한 노드(Node)에 할당하는 과정이다. 이 과정은 쿠버네티스 스케줄러(Kubernetes Scheduler)에 의해 자동으로 수행된다.

스케줄링의 주요 목표는 리소스 사용 최적화, 고가용성 유지, 사용자 정의 제약 조건 충족 등을 통해 클러스터의 효율성을 극대화하는 것이다.

1. 스케줄링 과정

포드 스케줄링 대기열: 새로 생성된 포드는 초기에 스케줄링 대기열에 들어간다.

이 포드들은 아직 어떤 노드에도 할당되지 않은 상태라고 볼 수 있다.

노드 선택: 스케줄러는 대기열에 있는 포드를 하나씩 처리하며, 각 포드에 가장 적합한 노드를 선택한다.

이 과정은 여러 단계로 이루어지며 다음과 같다.


- 필터링(Filtering): 스케줄러는 클러스터 내의 모든 노드를 대상으로 필터링 과정을 수행하여, 포드를 실행할 수 있는 노드의 후보군을 선별한다. 이때, 노드의 리소스 용량(예: CPU, 메모리), 타인트와 톨러레이션, 어피니티 규칙 등이 고려된다.
- 스코어링(Scoring): 필터링을 통과한 노드들에 대해 스케줄러는 스코어링 과정을 수행하여 각 노드에 점수를 부여한다. 이 점수는 포드를 해당 노드에 배치했을 때의 "적합도"를 나타내며, 스코어링은 노드의 리소스 사용률, 포드 간의 친밀도, 로드 분산 등 다양한 요소를 기반으로 계산된다.
- 포드 할당: 스코어링 과정을 통해 가장 높은 점수를 받은 노드가 선택되면, 스케줄러는 해당 노드에 포드를 할당한다. 이후, 쿠버네티스는 할당된 노드에서 포드를 실행하기 위한 준비를 한다.

 

2. 스케줄링 정책과 전략

스케줄링 정책(Scheduling Policies): 관리자는 스케줄링 정책을 통해 필터링과 스코어링 과정에서 사용되는 규칙을 정의할 수 있다. 이를 통해 특정 요구사항이나 제약 조건을 충족하는 스케줄링을 구현할 수 있다.

스케줄링 전략(Scheduling Strategies): 쿠버네티스는 다양한 스케줄링 전략을 지원한다. 예를 들어, Spread 전략은 포드를 가능한 균등하게 분산시키려고 시도하는 반면, Affinity 전략은 특정 노드나 포드에 포드를 배치하려고 시도한다.

쿠버네티스 스케줄링은 클러스터의 리소스를 효율적으로 사용하고, 애플리케이션의 성능과 가용성을 최적화하기 위한 핵심 기능이므로 해당 사항에 대해서는 숙지해 놓을 필요가 있다.

 

- 끝 -

반응형