[Master Node] Kube Scheduler

squareBird·2022년 4월 5일
0

Kubernetes

목록 보기
8/17
post-thumbnail

Kube Scheduler


Kubernetes 스케줄링이란 kubeletPod를 실행할 수 있도록 PodNode에 적합한지 확인하는 것을 의미하며, Kubernetes에서 이런 스케줄링을 담당하는 컴포넌트를 Scheduler라고 합니다.

kube-schedulerKubernetes의 기본 Scheduler이며 Master Node(Control Plane)의 일부로 실행됩니다.

또한 원하거나 필요에 따라 자체 스케줄링 컴포넌트를 만들고 대신 사용할 수 있도록 설계되었습니다.


Scheduler 동작방식

Scheduler는 새로 생성된 모든 Pod나 예약되지 않은 다른 Pod에 대해서 실행할 최적의 Node를 선택합니다.

하지만, Pod의 모든 컨테이너는 리소스에 대한 요구사항이 다르며 모든 Pod들도 요구사항이 다릅니다. 따라서 Pod를 배포하기 위해서는 기존의 Node들이 스케줄링 요구사항에 따라 필터링 되어야 합니다.

Cluster에서 Pod에 대한 스케줄링 요구사항을 충족하는 Node를 실행가능한(feasible)Node라고 합니다. 만약 적합한 Node가 존재하지 않을 경우 Scheduler가 배치할 수 있을 때 까지 Pod가 스케줄되지 않은 상태로 유지됩니다.

SchedulerPod가 실행 가능한 Node를 찾은 다음 실행 가능한 Node의 점수를 측정하는 기능 셋을 수행하고, 실행 가능한 Node 중에서 가장 높은 점수를 가진 Node를 선택하여 Pod를 실행합니다.

그리고 Pod를 바인딩 하기 위해 api-server에 자신이 선정한 Node의 정보를 전달합니다.

Scheduler는 어떤 Pod를 어떤 Node에 배치할지 결정하는 역할만 할 뿐 실제로 배치하는 것은 kubelet의 역할입니다.

스케줄링 프로파일

Kubernetes Cluster가 생성될 때 kube-scheduler가 기본 Scheduler로 생성는데 사용자는 구성파일을 통해 Scheduler의 동작을 사용자 정의 할 수 있습니다.

참고 : 스케줄링 구성 문서

profile
DevOps...

0개의 댓글