Kubernetes · Concepts ·
[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# Node Taint
2kubectl taint nodes node1 key=value:NoSchedule
3
4# Pod Toleration
5tolerations:
6- key: "key"
7 operator: "Equal"
8 value: "value"
9 effect: "NoSchedule"Node Affinity #
Node Affinity를 통해 특정 Node에 Pod를 배치할 수 있습니다.
1affinity:
2 nodeAffinity:
3 requiredDuringSchedulingIgnoredDuringExecution:
4 nodeSelectorTerms:
5 - matchExpressions:
6 - key: kubernetes.io/region
7 operator: In
8 values:
9 - us-east-1Scheduler 전체 아키텍처 #
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 기반 스케줄링
Advertisement