본문 바로가기
[GPUaaS]/TensorFlow

[GPU 타입] 운영 무중단 - 라벨 NodePool 등록

by METAVERSE STORY 2026. 1. 27.
반응형

 

 

✅ 결론 한 줄

이미 운영 중인 NCP 노드풀에는
👉 “콘솔(UI) 또는 NCP API”로만 라벨을 붙일 수 있고,
👉 Kubernetes YAML로는 절대 못 붙인다.

(kubectl label node는 임시 처방 ❌)

 

 


1️⃣ 왜 Kubernetes YAML로 안 되나?

이유는 구조 차이야

 
[Kubernetes]
 └─ Node (결과물)

[NCP]
 └─ NodePool (원본)
     └─ AutoScaling
         └─ Node 생성
 
 
 
  • YAML (Node, Machine)은 이미 만들어진 결과
  • 노드풀 라벨은 노드 생성 “이전” 설정

👉 그래서
❌ kubectl apply -f nodepool.yaml 같은 건 개념적으로 불가능

 

 


2️⃣ 이미 운영 중인 NCP 노드풀 → 라벨 추가 방법

✅ 방법 ① NCP 콘솔 (가장 많이 씀, 안전)

경로

 
NCP 콘솔
 → Kubernetes
   → Cluster 선택
     → 노드풀
       → (대상 노드풀 선택)
         → 수정
 
 
 

여기서 설정 👇

  • 노드 라벨 (Node Labels) 항목
 
gpu.vendor = nvidia
gpu.model  = A100
gpu.mem    = 80gb
gpu.pool   = train
 
 
 

저장하면?

  • ❗ 기존 노드: ❌ (변경 안 됨)
  • ✅ 이후 새로 생성되는 노드부터 자동 적용

📌 이게 제일 중요한 포인트

 

 


✅ 방법 ② NCP API (자동화 / IaC)

운영 자동화할 땐 이게 정석.

개념 흐름

 
GET nodePool
 → nodeLabels 수정
 → PUT / PATCH
 
 
 

예시 개념 (의사 YAML)

 
{
  "nodePoolName": "gpu-a100-pool",
  "nodeLabels": {
    "gpu.vendor": "nvidia",
    "gpu.model": "A100",
    "gpu.mem": "80gb",
    "gpu.pool": "train"
  }
}
 
 
 

👉 Terraform / 내부 자동화 스크립트에서 주로 사용

 

 


3️⃣ 그럼 “이미 떠 있는 노드”는 어떻게?

선택지는 딱 2개뿐이야


🔹 선택 ① 노드 교체 (권장, 정석)

  1. 노드풀 라벨 추가 (콘솔/API)
  2. 노드풀 scale out (1~2대)
  3. 기존 노드 cordon + drain
  4. scale in

👉 무중단 + 표준

 
kubectl cordon gpu-node-1
kubectl drain gpu-node-1 --ignore-daemonsets

 

 


🔹 선택 ② kubectl로 임시 라벨 (응급용)

 
kubectl label node gpu-node-1 gpu.model=A100

⚠️ 단점

  • 재부팅 / 교체 시 소멸
  • 오토스케일링과 불일치
  • 운영 표준 ❌

👉 “지금 당장 학습 깨지는 거 막을 때만”

 

 


4️⃣ 실무에서 쓰는 “혼합 전략” (현실적)

 
1️⃣ 노드풀에 라벨 추가 (콘솔)
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
 
 
 

🔥 최종 요약 (운영 기준)

NCP에서 노드풀 라벨은
“콘솔 또는 API에서만 설정 가능”하고,
기존 노드에는 적용되지 않으므로
최종적으로는 노드 교체가 정답이다.

 

 

반응형

댓글