Kube-Scheduler
kube-scheduler는 kubernetes에서 Pod를 적절한 노드에 배치하는 역할을 하는 핵심 컴포넌트이다.
다만 scheduler를 pod를 직접 배포하지는 않으며, 단순히 이 pod는 이 node에서 실행해라!
라는 결정을 내리는 역할만을 수행한다.
실제로 Pod를 실행하는 것은 Kubelet
이다
kube-scheduler가 Pod를 배치하는 과정
pod 배치 과정은 두 단계로 이루어진다.
Filtering
Pod가 실행될 수 없는 노드를 제거한다. 예를 들어, Pod이 요청한 CPU/메모리보다 적은 리소스를 가진 노드는 배제된다. 결과적으로 Pod를 실행할 수 있는 후보 노드 목록을 생성한다.
Scoring
후보 노드 중에서 가장 적절한 노드를 선택하는 과정이다. 기본적으로 0~10점을 부여하며 가장 높은 점수를 받은 노드가 선정된다.
kube-scheduler가 고려하는 요소
Kube-scheduler는 pod 배치 시 다음과 같이 다양한 조건을 고려한다.
- 리소스 요구 사항(CPU, 메모리)
- Taints & Tolertaions
- 특정 노드에 특정 Pod만 실행되도록 설정 가능하다.
- Node Selector
- pod이 특정 노드에서만 실행되도록 강제할 수 있음
- ex) nodeSelector를 사용하여 특정 레이블을 가진 노드에서만 실행되도록 지정할 수 있음
- Node Affinity & Pod Affinity
- 특정 노드에 우선적으로 배치되거나, 특정 Pod와 가까운 위치에 배치하는 기능이다.
- kube-scheduler는 Pod 형태로 자동 배포
- 설정 파일은 /etc/kubernetes/manifests/kube-scheduler.yaml에 저장됨
- 시스템 서비스로 실행된다
- 설정 파일은 /etc/systemd/system/kube-scheduler.service에 위치
- kubeadm을 사용한 경우
'CKA' 카테고리의 다른 글
(TIL) Kubernetes의 Pod (0) | 2025.03.13 |
---|---|
(TIL) Kube-Proxy (0) | 2025.03.09 |
(TIL) Kube Controller Manager in Kubernetes (0) | 2025.03.09 |
(TIL) Kube-API Server (0) | 2025.03.09 |
(TIL) Kubernetes의 ETCD (0) | 2025.03.03 |