반응형
✅ 결론 한 줄
이미 운영 중인 NCP 노드풀에는
👉 “콘솔(UI) 또는 NCP API”로만 라벨을 붙일 수 있고,
👉 Kubernetes YAML로는 절대 못 붙인다.
(kubectl label node는 임시 처방 ❌)
1️⃣ 왜 Kubernetes YAML로 안 되나?
이유는 구조 차이야
[Kubernetes]
└─ Node (결과물)
[NCP]
└─ NodePool (원본)
└─ AutoScaling
└─ Node 생성
└─ Node (결과물)
[NCP]
└─ NodePool (원본)
└─ AutoScaling
└─ Node 생성
- YAML (Node, Machine)은 이미 만들어진 결과
- 노드풀 라벨은 노드 생성 “이전” 설정
👉 그래서
❌ kubectl apply -f nodepool.yaml 같은 건 개념적으로 불가능
2️⃣ 이미 운영 중인 NCP 노드풀 → 라벨 추가 방법
✅ 방법 ① NCP 콘솔 (가장 많이 씀, 안전)
경로
NCP 콘솔
→ Kubernetes
→ Cluster 선택
→ 노드풀
→ (대상 노드풀 선택)
→ 수정
→ Kubernetes
→ Cluster 선택
→ 노드풀
→ (대상 노드풀 선택)
→ 수정
여기서 설정 👇
- 노드 라벨 (Node Labels) 항목
gpu.vendor = nvidia
gpu.model = A100
gpu.mem = 80gb
gpu.pool = train
gpu.model = A100
gpu.mem = 80gb
gpu.pool = train
저장하면?
- ❗ 기존 노드: ❌ (변경 안 됨)
- ✅ 이후 새로 생성되는 노드부터 자동 적용
📌 이게 제일 중요한 포인트
✅ 방법 ② NCP API (자동화 / IaC)
운영 자동화할 땐 이게 정석.
개념 흐름
GET nodePool
→ nodeLabels 수정
→ PUT / PATCH
→ nodeLabels 수정
→ PUT / PATCH
예시 개념 (의사 YAML)
{
"nodePoolName": "gpu-a100-pool",
"nodeLabels": {
"gpu.vendor": "nvidia",
"gpu.model": "A100",
"gpu.mem": "80gb",
"gpu.pool": "train"
}
}
"nodePoolName": "gpu-a100-pool",
"nodeLabels": {
"gpu.vendor": "nvidia",
"gpu.model": "A100",
"gpu.mem": "80gb",
"gpu.pool": "train"
}
}
👉 Terraform / 내부 자동화 스크립트에서 주로 사용
3️⃣ 그럼 “이미 떠 있는 노드”는 어떻게?
선택지는 딱 2개뿐이야
🔹 선택 ① 노드 교체 (권장, 정석)
- 노드풀 라벨 추가 (콘솔/API)
- 노드풀 scale out (1~2대)
- 기존 노드 cordon + drain
- scale in
👉 무중단 + 표준
kubectl cordon gpu-node-1
kubectl drain gpu-node-1 --ignore-daemonsets
kubectl drain gpu-node-1 --ignore-daemonsets
🔹 선택 ② kubectl로 임시 라벨 (응급용)
kubectl label node gpu-node-1 gpu.model=A100
⚠️ 단점
- 재부팅 / 교체 시 소멸
- 오토스케일링과 불일치
- 운영 표준 ❌
👉 “지금 당장 학습 깨지는 거 막을 때만”
4️⃣ 실무에서 쓰는 “혼합 전략” (현실적)
1️⃣ 노드풀에 라벨 추가 (콘솔)
2️⃣ 기존 노드 → kubectl로 임시 라벨
3️⃣ 점진적으로 노드 교체
4️⃣ 임시 라벨 제거
2️⃣ 기존 노드 → kubectl로 임시 라벨
3️⃣ 점진적으로 노드 교체
4️⃣ 임시 라벨 제거
이렇게 하면
- 지금 TFJob 안 깨지고
- 미래 노드는 정상
- 리스크 최소화
5️⃣ 절대 하면 안 되는 착각 🚫
| 착각 | 현실 |
| Node YAML로 관리 | ❌ |
| DaemonSet으로 라벨 | ❌ |
| Admission Webhook | ❌ |
| Pod에서 nodeLabel 생성 | ❌ |
6️⃣ 검증 포인트 (꼭 확인)
# 노드풀 설정 확인
kubectl get node --show-labels | grep gpu.model
# 새 노드가 자동 라벨 되는지
kubectl get node -o wide
kubectl get node --show-labels | grep gpu.model
# 새 노드가 자동 라벨 되는지
kubectl get node -o wide
🔥 최종 요약 (운영 기준)
NCP에서 노드풀 라벨은
“콘솔 또는 API에서만 설정 가능”하고,
기존 노드에는 적용되지 않으므로
최종적으로는 노드 교체가 정답이다.
반응형
'[GPUaaS] > TensorFlow' 카테고리의 다른 글
| [중요2] 운영 표준 - [최종] Train.py & TFJob.yaml (라벨/MIG/RWO 적용) (0) | 2026.01.30 |
|---|---|
| [중요2] 운영 표준 - TFJob.yaml (라벨/MIG/RWO/S3 적용) (0) | 2026.01.28 |
| [중요2] 운영 표준 - ☸️ Kubernetes + TensorFlow 구동 원리 (0) | 2026.01.28 |
| [중요2] 운영 표준 - GPU 노드 라벨 세트 (0) | 2026.01.28 |
| [GPU 타입] 신규 라벨 NodePool 등록 (라벨 + Taint + Affinity 세트) (0) | 2026.01.26 |
| [GPU] Node Affinity + GPU 타입 분리 (A100 / H100) (0) | 2026.01.26 |
| [GPU] requests = limits가 좋은 이유 (0) | 2026.01.26 |
| [TF 분산학습] 스토리지 관점 + TensorFlow 내부 동작 (0) | 2026.01.26 |
댓글