블로그/DevOps
DevOps시니어2026-05-13

Kubernetes Pod 스케줄링 메커니즘

한 줄 답변

Kubernetes 스케줄러는 Filtering과 Scoring 단계를 거쳐 최적의 노드를 선택합니다. 실무에서는 Taints/Tolerations로 노드 접근을 제어하고, Node Affinity로 특정 노드 선호를 설정하여 자원 효율성과 고가용성을 극대화합니다.

핵심 개념 정리

Kubernetes 스케줄러(kube-scheduler)는 새로 생성된 Pod를 실행할 최적의 노드를 찾는 제어 평면의 핵심 컴포넌트입니다. 스케줄링 과정은 크게 Filtering(Predicates)과 Scoring(Priorities) 두 단계로 나뉩니다. Filtering 단계에서는 리소스(CPU, 메모리) 부족 노드, 포트 충돌 노드, 혹은 Taints가 설정된 노드를 후보군에서 제외합니다. 이후 Scoring 단계에서는 가용 리소스가 가장 많은 노드나 Affinity 규칙에 가장 부합하는 노드에 가중치를 부여해 최종 배치될 노드를 0-100점 사이의 점수로 결정합니다.

Taints와 Tolerations는 노드가 특정 Pod를 '밀어내는(Repel)' 역할을 합니다. 노드에 Taint를 설정하면 대응하는 Toleration이 없는 Pod는 배제됩니다. 이는 GPU 전용 인스턴스나 마스터 노드 보호와 같이 특정 워크로드 전용 노드를 운영할 때 필수적입니다. 반면 Node Affinity는 Pod가 특정 노드로 '끌리는(Attract)' 설정으로, Required(강제)와 Preferred(선호) 옵션을 통해 유연한 배치 전략을 제공합니다.

시니어 레벨에서는 이러한 기본 메커니즘 외에도 Inter-Pod Anti-Affinity를 통한 고가용성(HA) 확보와 Topology Spread Constraints를 활용한 데이터 센터 레벨의 분산 전략을 이해해야 합니다. 특히 수천 대 규모의 클러스터에서는 스케줄링 오버헤드를 줄이기 위해 percentageOfNodesToScore 옵션을 조정하는 등 성능 최적화 경험이 중요하게 다뤄집니다. 스케줄링 정책의 실수는 자원 파편화(Fragmentation)나 서비스 장애로 직결되므로 매우 신중한 설계가 필요합니다.

비교 정리

항목Taints & TolerationsNode Affinity
핵심 목적특정 노드에 Pod가 들어오지 못하도록 '거부'Pod가 특정 노드에 배치되도록 '선택'
설정 위치노드(Taint)와 Pod(Toleration) 양측 설정Pod Spec의 Affinity 필드에만 설정
강제성 제어NoSchedule, NoExecute 등 강력한 퇴거 정책Required(Hard)와 Preferred(Soft) 선택 가능
주요 활용특수 하드웨어(GPU) 격리, 노드 장애 시 퇴거특정 가용 영역(AZ) 배치, 하드웨어 사양 매칭

면접에서 이렇게 답하세요

단순히 이론을 나열하기보다 '자원 파편화(Fragmentation)' 문제를 해결했던 경험을 섞어 답변하세요. 예를 들어, '특정 팀 전용 노드 그룹을 운영하면서 Taints를 통해 일반 워크로드를 차단하고, DB 워크로드는 Local SSD 노드에만 가도록 Affinity를 설정해 성능과 비용을 동시에 최적화했다'는 방식의 실무 경험을 언급하면 좋은 평가를 받습니다.

자주 묻는 추가 질문

Q. Pod가 Pending 상태에서 머무는 가장 흔한 이유는 무엇인가요?

주로 노드의 가용 리소스(CPU/Mem) 부족이 원인이며, Taints 설정에 대응하는 Toleration이 없거나 Affinity 조건이 지나치게 까다로워 적합한 노드를 찾지 못하는 경우 발생합니다.

Q. NoExecute Taint의 특별한 점은 무엇인가요?

NoSchedule과 달리 이미 실행 중인 Pod도 즉시 퇴거(Evict)시킵니다. 이는 노드 점검이나 치명적인 커널 오류 발생 시 워크로드를 다른 노드로 즉각 이동시켜 안정성을 확보하는 데 사용됩니다.

Q. Affinity 설정 시 Soft(Preferred) 조건을 권장하는 이유는?

Hard(Required) 조건은 조건 충족 노드가 없을 시 Pod 생성이 아예 실패하지만, Soft 조건은 조건 미충족 시에도 다른 노드에 배치를 시도하여 서비스 가용성을 유지하기 때문입니다.

커뮤니티 하이라이트

실무에서 GPU 노드 관리는 Taints가 생명입니다. 설정 실수 한 번에 일반 Batch 작업이 비싼 GPU 자원을 다 먹어버리는 사태를 방지해야 하죠.

@infra_master_9948

Inter-pod Affinity는 클러스터 규모가 커지면 스케줄러 부하를 기하급수적으로 높입니다. 대규모 환경에선 Topology Spread Constraints 사용을 검토하세요.

@k8s_architect35

42명의 개발자가 이 질문에 참여했습니다

관련 면접 질문

앱에서 직접 답변해보세요

매일 3개의 면접 질문에 답변하고,
다른 개발자들의 답변을 비교해보세요.

무료로 시작하기