728x90
SMALL
쿠버네티스 워크로드 선택 기준
사용 목적 | 추천 워크로드 |
단순한 컨테이너 실행 | Pod |
웹 서비스, API 서버 배포 | Deployment |
데이터베이스, 상태 유지 서비스 | StatefulSet |
모든 노드에서 실행해야 하는 모니터링/보안 에이전트 | DaemonSet |
한 번 실행 후 종료되는 작업 | Job |
주기적으로 실행되는 작업 | CronJob |
📌 각 워크로드 예제
1️⃣ Pod 예제 (단순 컨테이너 실행)
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
- 단순한 컨테이너 실행에 사용되며, 직접 사용보다는 컨트롤러(Deployment 등)에서 관리하는 것이 일반적임.
2️⃣ Deployment 예제 (무중단 배포 & 스케일링)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
- 무중단 배포(Rolling Update), 스케일링을 지원하며, 일반적인 애플리케이션 배포에 사용됨.
3️⃣ StatefulSet 예제 (데이터 유지가 필요한 서비스)
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-statefulset
spec:
serviceName: "my-service"
replicas: 2
selector:
matchLabels:
app: database
template:
metadata:
labels:
app: database
spec:
containers:
- name: db-container
image: mysql
- 각 Pod가 고유한 네트워크 ID를 가지며, 데이터가 유지됨.
- 데이터베이스 및 상태 유지가 필요한 서비스(MySQL, Cassandra 등)에 적합.
4️⃣ DaemonSet 예제 (모든 노드에서 실행)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: monitoring-agent
spec:
selector:
matchLabels:
app: monitoring
template:
metadata:
labels:
app: monitoring
spec:
containers:
- name: agent
image: prom/node-exporter
- 클러스터 내 모든 노드에서 실행되며, 노드 추가 시 자동으로 배포됨.
- 모니터링, 로깅 에이전트(Fluentd, Prometheus) 등에 사용됨.
5️⃣ Job 예제 (한 번 실행 후 종료되는 작업)
apiVersion: batch/v1
kind: Job
metadata:
name: my-job
spec:
template:
spec:
containers:
- name: backup
image: alpine
command: ["sh", "-c", "echo '백업 작업 수행 중...' && sleep 10"]
restartPolicy: Never
- 데이터 백업, 일회성 스크립트 실행 등 한 번 실행 후 종료되는 작업에 사용됨.
6️⃣ CronJob 예제 (정기적으로 실행되는 Job)
apiVersion: batch/v1
kind: CronJob
metadata:
name: log-cleanup
spec:
schedule: "0 0 * * *" # 매일 자정에 실행
jobTemplate:
spec:
template:
spec:
containers:
- name: cleanup
image: alpine
command: ["sh", "-c", "echo '로그 정리 중...'"]
restartPolicy: OnFailure
- 정해진 일정(cron 형식)대로 실행되는 배치 작업.
- 로그 정리, 데이터 정리 등의 작업에 유용.
📌 결론
✅ 쿠버네티스에는 다양한 워크로드(Workloads) 가 있으며, 각 목적에 맞게 선택해야 함.
✅ 일반적인 애플리케이션 배포에는 Deployment, 데이터베이스 관리에는 StatefulSet, 모니터링 에이전트에는 DaemonSet 사용.
✅ 배치 작업은 Job(CronJob 포함) 을 활용하여 실행 가능.
LIST
'🔹Kubernetes' 카테고리의 다른 글
[Rocky Linux 8.10] Harbor v2.10.3 설치 및 구축 가이드 (0) | 2025.04.15 |
---|---|
Kubernetes v1.30.0 폐쇄망 설치 가이드 (Harbor Registry 연동) (0) | 2025.04.15 |
taint와 toleration을 사용하는 이유 (0) | 2025.02.27 |
Kubernetes 워크로드 리소스들의 특징 및 종속성 (0) | 2025.02.25 |
kubernetes Service vs Ingress 비교 (0) | 2025.02.02 |