서론
스케줄러는 어떤 파드를 어떤 노드에 배치할지를 결정(명령)하는 역할을 한다.
직접 파드를 노드에 배치(수행)하는 것은 kubelet의 역할이다.
따라서 스케줄러는 단지 “어디에 배치할지”만 결정만한다.
이 장에서는 스케줄러가 실제로 어떻게 작동하는지 좀 더 자세히 살펴본다.
Scheduler

- 많은 노드와 많은 파드가 있을 때, 효율적으로 파드를 노드에 배치되도록 해야 합니다.
- 예를 들어, 각 노드의 사양은 다르고 리소스는 제한적이다.
- 먼저 파드를 수용할 수 있는 노드인지 확인해야 한다.
- Kubernetes에서는 스케줄러가 특정 기준에 따라 어떤 노드에 파드를 배치할지를 결한다.
- 파드가 요구되는 CPU, 메모리를 충족 못 하는 노드, taint가 맞지 않는 노드 등을 먼저 탈락시킨다.
- 스케줄링 방식
- 남은 노드에 0 ~ 10 점수를 매겨 최고 점수를 받은 노드를 선택한다.
- 점수시스템 외에 리소스 요구·Limit, taints & tolerations, node selector, (anti)-affinity 같은 규칙을 추가해 배치 전략을 세밀하게 조정할 수 있다. (필요하면 Go로 자체 스케줄러를 작성해 쿠버네티스와 병행 실행도 가능하다.)배포 방법
- 설치
- kubeadm 사용 시 → 마스터 노드 kube-system 네임스페이스에 파드로 자동 배포된다.
- 설정·옵션은 아래 경로에서 확인가능하다.
- kubeadm 환경: /etc/kubernetes/manifests/kube-scheduler.yaml
Comment