쿠버네티스 클러스터를 운영하다 보면 특정 파드를 원하는 노드에 명확하게 배치해야 할 상황이 생깁니다. 오늘은 가장 직관적이고 기초적인 스케줄링 방법인 nodeName과 nodeSelector에 대해 상세히 정리해 드리겠습니다.

1. 파드 스케줄링이란? 📍
쿠버네티스에서 스케줄링은 대기 중인 파드가 적절한 노드에 할당되어 실행되도록 결정하는 과정입니다. 기본적으로 kube-scheduler가 노드의 자원 상태를 확인하여 자동으로 배치하지만, 관리자가 직접 제어해야 할 때 nodeName과 nodeSelector를 사용합니다.
2. 가장 강력하고 단순한 방법: nodeName 🎯
nodeName은 스케줄러의 복잡한 계산을 완전히 무시하고, 특정 노드 이름을 명시하여 파드를 강제로 배치하는 방식입니다.
- 특징: kube-scheduler를 거치지 않고 바로 해당 노드의 kubelet에게 파드 실행을 요청합니다.
- 장점: 매우 빠르고 확실합니다.
- 단점: 유연성이 전혀 없습니다. 해당 이름의 노드가 없거나 자원이 부족하면 파드는 실행되지 않습니다.
💻 예시 YAML 설정
YAML
apiVersion: v1
kind: Pod
metadata:
name: nodename-pod
spec:
containers:
- name: nginx
image: nginx
nodeName: worker-node-01 # 반드시 이 노드에만 배정됨
3. 라벨 기반의 유연한 선택: nodeSelector 🏷️
nodeSelector는 노드에 설정된 **라벨(Label)**을 기반으로 파드가 배정될 노드 그룹을 선택하는 방식입니다. 현재 쿠버네티스에서 가장 권장되는 기초적인 스케줄링 방법입니다.
- 특징: 파드 명세서에 정의된 키-값 쌍(Key-Value pair)과 일치하는 라벨을 가진 노드에만 파드가 배치됩니다.
- 사용 흐름:
- 노드에 라벨을 부여합니다.
- 파드 YAML의 nodeSelector에 해당 라벨을 명시합니다.
🛠️ 노드에 라벨 지정하기
먼저 터미널에서 노드에 고유한 특성을 부여합니다.
Bash
kubectl label nodes worker-node-02 disktype=ssd
💻 예시 YAML 설정
YAML
apiVersion: v1
kind: Pod
metadata:
name: nodeselector-pod
spec:
containers:
- name: nginx
image: nginx
nodeSelector:
disktype: ssd # 'disktype=ssd' 라벨이 있는 노드에만 배치됨
4. nodeName vs nodeSelector 비교 요약 📊
| 구분 | nodeName | nodeSelector |
| 방식 | 노드 이름을 직접 명시 | 노드의 라벨을 조건으로 명시 |
| 스케줄러 개입 | X (스케줄러 우회) | O (스케줄러가 조건 검색) |
| 유연성 | 매우 낮음 (고정됨) | 중간 (동일 라벨 노드 중 선택) |
| 권장 용도 | 특정 노드 장애 디버깅 시 | 특정 하드웨어(GPU, SSD) 요구 시 |
5. 주의사항 및 한계점 ⚠️
- 대소문자 구분: 라벨의 키와 값은 대소문자를 엄격히 구분합니다.
- 일치 여부: nodeSelector에 명시된 모든 라벨이 노드에 존재해야 합니다. 하나라도 맞지 않으면 파드는 Pending 상태에 머뭅니다.
- 복잡한 조건: "A 또는 B 노드", "라벨이 없는 노드 제외" 같은 복잡한 논리는 nodeSelector로 구현하기 어렵습니다. 이 경우 더 상위 개념인 Node Affinity를 사용해야 합니다.
이 내용이 클러스터 자원을 효율적으로 관리하시는 데 도움이 되기를 바랍니다.
'클라우드 > 쿠버네티스' 카테고리의 다른 글
| 🚀 쿠버네티스 모든 노드의 관리자: DaemonSet 가이드 (0) | 2026.02.21 |
|---|---|
| 쿠버네티스 HPA(Horizontal Pod Autoscaler) 완벽 가이드: 트래픽 변화에 유연하게 대응하기 🚀 (0) | 2026.02.19 |
| 쿠버네티스의 App Store, Helm으로 복잡한 매니페스트 한 번에 관리하기 (0) | 2026.02.16 |
| Kustomize를 활용한 쿠버네티스 애플리케이션 설정 관리 가이드 (0) | 2026.02.16 |
| 🔐 Kubernetes Secret: 민감한 정보를 안전하게 관리하는 법 (과 그 한계) (0) | 2026.02.09 |