반응형
쿠버네티스 “워크로드 개념”을 한 번에 정리할 수 있는 포인트라서,
TFJob까지 묶어서 역할·수명·재시작·확장 관점으로 설명해줄게.
1️⃣ Pod – 모든 것의 출발점
✅ 뭐냐면
- 쿠버네티스에서 실제로 실행되는 최소 단위
- 하나 이상의 컨테이너 묶음
특징
- 일회성 존재
- 죽으면 끝 (스스로 복구 안 됨)
- IP, 볼륨, 네임스페이스 공유
언제 쓰나
- 테스트
- 디버깅
- 절대 운영용 아님
apiVersion: v1 kind: Pod
📌 운영에서는 Pod를 직접 만들지 않는다 → 항상 상위 컨트롤러 사용
2️⃣ Deployment – “계속 살아 있어야 하는 서비스”
✅ 뭐냐면
- 무한히 실행되어야 하는 앱을 관리
- ReplicaSet을 통해 Pod 유지
특징
- 항상 지정한 개수만큼 Pod 유지
- 롤링 업데이트 지원
- 장애 시 자동 복구
대표 사용처
- API 서버
- 웹 서비스
- 대시보드
- inference 서버
apiVersion: apps/v1
kind: Deployment
kind: Deployment
📌 “서비스형 워크로드”
3️⃣ Job – “한 번 실행하고 끝”
✅ 뭐냐면
- 작업을 반드시 완료해야 하는 워크로드
- 성공하면 종료됨
특징
- 성공/실패 기준 존재
- 실패 시 재시도 가능
- 완료되면 Pod 종료
대표 사용처
- 배치 처리
- 데이터 전처리
- 모델 학습 (단일 노드)
- 마이그레이션
apiVersion: batch/v1
kind: Job
kind: Job
📌 “완료가 목표”
4️⃣ CronJob – “Job을 정기적으로”
✅ 뭐냐면
- Job을 주기적으로 실행
- 내부적으로 Job을 생성함
특징
- crontab 문법 사용
- 주기 실행
- 실패 시 재실행 가능
대표 사용처
- 정기 백업
- 로그 정리
- 주기적 데이터 수집
apiVersion: batch/v1
kind: CronJob
kind: CronJob
📌 “정기 배치”
5️⃣ TFJob – “TensorFlow 분산 학습 전용 컨트롤러”
이제 핵심 🔥
TFJob은 뭐야?
✅ Kubeflow에서 제공하는 CRD (Custom Resource)
- 쿠버네티스 기본 리소스 아님
- 분산 TensorFlow 학습을 위해 만들어짐
apiVersion: kubeflow.org/v1
kind: TFJob
kind: TFJob
TFJob이 Deployment/Job이랑 다른 이유
❌ Job으로 안 되는 것
- 분산 학습 시 역할 구분 필요
- Chief
- Worker
- ParameterServer (PS)
- 각 Pod의 환경변수 자동 설정 필요
- 전체 학습 성공/실패 판단 필요
👉 Job으로 하면 전부 수동 구성
TFJob이 해주는 일
| 기능 | 설명 |
| 역할 분리 | Chief / Worker / PS |
| Pod 자동 생성 | 역할별 Replica 생성 |
| 통신 환경변수 | TF_CONFIG 자동 주입 |
| 전체 성공 판단 | 모든 Worker 완료 시 성공 |
| 재시작 정책 | 역할별 restartPolicy |
| 스케줄링 | GPU, Node Affinity 적용 |
TFJob 구조 예시
spec:
tfReplicaSpecs:
Chief:
replicas: 1
Worker:
replicas: 4
tfReplicaSpecs:
Chief:
replicas: 1
Worker:
replicas: 4
👉 내부적으로는 Pod + Job 비슷한 로직이지만
👉 “학습 프레임워크 전용 오케스트레이터”
6️⃣ 한 방에 비교 표 📊
| 리소스 | 목적 | 실행 형태 | 재시작 | 대표 사용 |
| Pod | 컨테이너 실행 | 1회 | ❌ | 테스트 |
| Deployment | 서비스 유지 | 무한 | ⭕ | API / 웹 |
| Job | 작업 완료 | 1회 | ⭕ | 배치 |
| CronJob | 정기 작업 | 반복 | ⭕ | 스케줄 배치 |
| TFJob | 분산 학습 | 학습 종료 시 종료 | ⭕ | GPU 학습 |
7️⃣ 그래서 언제 뭘 써야 하나?
✅ GPU 학습 기준 정리
| 상황 | 추천 |
| 단일 GPU 학습 | Job |
| 분산 TensorFlow | TFJob |
| PyTorch 분산 | PyTorchJob |
| 추론 서버 | Deployment |
| 정기 학습 | CronJob + TFJob |
8️⃣ 핵심 요약 (면접용 문장)
Pod는 실행 단위이고, Deployment는 서비스 유지용,
Job/CronJob은 완료형 배치 작업이며,
TFJob은 TensorFlow 분산 학습을 위해 Job을 확장한 Kubeflow CRD이다.
반응형
'[GPUaaS] > TensorFlow' 카테고리의 다른 글
| [중요2] 운영 표준 - GPU 노드 라벨 세트 (0) | 2026.01.28 |
|---|---|
| [GPU 타입] 운영 무중단 - 라벨 NodePool 등록 (1) | 2026.01.27 |
| [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 |
| [TensorFlow] 구글이 만든 머신러닝·딥러닝 프레임워크 !! (0) | 2026.01.26 |
| [TFJob] POD Sidecar 자동 업로드 (0) | 2026.01.25 |
댓글