[Kubernetes] Scheduler 이해 (Pod 스케줄링 원리, Node Selection, Taints/Tolerations)
Kubernetes Scheduler 동작 원리와 Pod 스케줄링, Node Selection, Taints/Tolerations, 리소스 스케줄링까지 정리합니다.
[Kubernetes] Scheduler 이해 (Pod 스케줄링 원리, Node Selection, Taints/Tolerations)
☸️ Kubernetes Scheduler 이해하기
Kubernetes에서 Scheduler는 Pod를 어떤 Node에서 실행할지 결정하는 핵심 컴포넌트입니다.
Scheduler를 이해하면 다음을 알 수 있습니다.
- Pod가 Pending 상태로 멈춘 이유
- 특정 Node에 Pod를 배치하는 방법
- Taints/Tolerations와 Node Affinity 활용법
- 리소스 활용 최적화 방법
Scheduler 동작 개요
Scheduler는 Pending 상태 Pod를 감지하고 Node를 선택합니다.
graph TD
A[Pending Pod]
B[Scheduler]
C[Node Selection]
D[Bind Pod to Node]
A --> B
B --> C
C --> D
Node Selection 과정
Scheduler는 다음 단계를 거쳐 Node를 선택합니다.
1️⃣ Filter - 스케줄 가능한 Node 후보 선별 2️⃣ Score - 후보 Node 점수 계산 3️⃣ Select - 최종 Node 선택 4️⃣ Bind - Pod와 Node 연결
graph TD
A[Pending Pod]
B[Filter]
C[Score]
D[Select]
E[Bind]
A --> B --> C --> D --> E
Filter 단계
Filter 단계에서는 다음 조건을 확인합니다.
- Node 리소스 충분 여부(CPU, Memory)
- Taints/Tolerations 일치 여부
- Node Affinity/Anti-affinity 조건
- Pod Affinity/Anti-affinity 조건
Score 단계
Score 단계에서는 후보 Node에 점수 계산을 합니다.
- 리소스 사용률 균형
- Pod 배치 최적화
- Node 선호도 반영
graph TD
A[Node1]
B[Node2]
C[Node3]
A -->|score 80| D[Candidate]
B -->|score 95| D
C -->|score 60| D
Bind 단계
최종 Node를 선택한 후 Scheduler는 API Server를 통해 Pod와 Node를 바인딩합니다.
graph TD
A[Scheduler]
B[Kubernetes API Server]
C[Node]
D[Pod]
A --> B --> C
B --> D
Taints / Tolerations
Taints: Node에 표시, Pod가 배치되지 않도록 함 Tolerations: Pod가 Taint를 허용하도록 설정
graph TD
A[Node with Taint]
B[Pod with Toleration]
A --> B
예시
1
2
3
4
5
6
7
8
9
# Node Taint
kubectl taint nodes node1 key=value:NoSchedule
# Pod Toleration
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"
Node Affinity
Node Affinity를 통해 특정 Node에 Pod를 배치할 수 있습니다.
1
2
3
4
5
6
7
8
9
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/region
operator: In
values:
- us-east-1
Scheduler 전체 아키텍처
graph TD
A[Pending Pod]
B[Scheduler]
C[Filter Phase]
D[Score Phase]
E[Select Node]
F[Bind]
G[Node]
A --> B --> C --> D --> E --> F --> G
정리
Scheduler 핵심
역할
- Pending Pod 감지
- Node 선택
- Pod 바인딩
스케줄링 과정
- Filter → Score → Select → Bind
고급 기능
- Taints / Tolerations
- Node Affinity / Anti-affinity
- Resource 기반 스케줄링
This post is licensed under CC BY 4.0 by the author.