1. kube-scheduler 개요
- 역할: Kubernetes에서 어떤 Pod를 어떤 Node에 배치할지 결정하는 컴포넌트
- 중요한 점: Pod를 실제로 생성하는 것은 kubelet이고, scheduler는 “위치 결정”만 함
- 비유:
- Scheduler = 항구의 컨테이너 배치 관리자
- Kubelet = 배 위에서 컨테이너를 직접 싣는 선장
2. 스케줄링 필요성
- 클러스터에 여러 노드가 있을 때, 리소스와 조건에 맞게 Pod를 배치해야 함
- 고려 요소:
- CPU / 메모리 요구사항
- 특정 앱 전용 노드
- 노드의 목적지(라벨, 용도 등)
- 정책, 규칙 (taints, tolerations, affinity, selectors 등)
3. 스케줄링 과정
- 필터링 (Filtering)
- Pod 요구사항을 충족하지 않는 노드 제외
- 예: CPU·메모리 부족 노드 필터 아웃
- 랭킹 (Scoring)
- 남은 노드에 점수를 매겨 최적의 노드 선택
- 예: Pod 배치 후 남는 CPU가 많은 노드에 더 높은 점수 부여 (0~10 스케일)
- 선택 (Binding)
- 가장 높은 점수를 받은 노드를 Pod에 할당
- 이 정보는 API 서버를 통해 kubelet로 전달됨
4. 커스터마이징
- 기본 스케줄러 외에 사용자 정의 스케줄러 작성 가능
- 다양한 조건(리소스 제한, taints/tolerations, affinity/anti-affinity) 적용 가능
5. 설치 및 실행