문서 목차
QKS · Workloads
Deployments
Deployment 는 상태 비저장(stateless) 애플리케이션을 위한 Kubernetes 워크로드 오브젝트입니다. 원하는 수의 Pod 복제본이 항상 실행되도록 관리하며, 이미지 업데이트 시 서비스 중단 없이 롤링 업데이트를 진행하고 문제가 생기면 이전 버전으로 롤백할 수 있습니다.
QUANTUM C&S
개요
Deployment는 상태 비저장(stateless) 애플리케이션을 위한 Kubernetes 워크로드 오브젝트입니다. 원하는 수의 Pod 복제본이 항상 실행되도록 관리하며, 이미지 업데이트 시 서비스 중단 없이 롤링 업데이트를 진행하고 문제가 생기면 이전 버전으로 롤백할 수 있습니다.
QKS 콘솔에서 Deployment 확인
- 왼쪽 메뉴에서 Workloads > Deployments를 선택합니다.
- 네임스페이스를 선택하면 Deployment 목록이 표시됩니다.
목록에서 확인할 수 있는 정보:
- 이름: Deployment 이름
- 준비 상태:
준비된 파드 수 / 전체 파드 수(예:3/3) - 이미지: 컨테이너 이미지 및 태그
- 생성 시간
Deployment 상세 정보
Deployment 이름을 클릭하면 다음 정보를 확인할 수 있습니다:
- 현재 실행 중인 Pod 목록 및 상태
- 컨테이너 이미지 및 태그
- 환경 변수 및 볼륨 설정
- 리소스 요청량/제한량 (CPU, 메모리)
- 롤아웃 히스토리 (이전 버전으로 롤백 가능)
kubectl로 관리
기본 조회
# Deployment 목록
kubectl get deployments -n <namespace>
# 상세 정보
kubectl describe deployment <name> -n <namespace>
# 실시간 상태 모니터링
kubectl get deployment <name> -n <namespace> -w
이미지 업데이트 (롤링 업데이트)
kubectl set image deployment/<name> <container>=<image>:<tag> -n <namespace>
# 롤아웃 상태 확인
kubectl rollout status deployment/<name> -n <namespace>
롤백
# 이전 버전으로 롤백
kubectl rollout undo deployment/<name> -n <namespace>
# 특정 리비전으로 롤백
kubectl rollout undo deployment/<name> --to-revision=<revision-number> -n <namespace>
# 롤아웃 히스토리 확인
kubectl rollout history deployment/<name> -n <namespace>
스케일 조정
kubectl scale deployment/<name> --replicas=<count> -n <namespace>
Deployment YAML 예시
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-registry/my-app:v1.0.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
env:
- name: ENV
value: "production"
롤링 업데이트 전략
Deployment는 기본적으로 롤링 업데이트 방식을 사용합니다. 업데이트 중 최대 몇 개의 파드를 동시에 교체할지 strategy 필드로 제어할 수 있습니다.
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # 업데이트 중 사용 불가 파드 최대 수
maxSurge: 1 # 동시에 추가 생성할 수 있는 파드 최대 수
리소스 요청/제한 권장사항
| 항목 | 설명 |
|---|---|
requests.cpu |
파드가 보장받는 최소 CPU. 스케줄링 시 기준이 됩니다. |
requests.memory |
파드가 보장받는 최소 메모리. |
limits.cpu |
파드가 사용할 수 있는 최대 CPU. |
limits.memory |
파드가 사용할 수 있는 최대 메모리. 초과 시 OOMKilled됩니다. |
requests 없이 배포하면 노드의 실제 가용 리소스를 알 수 없어 스케줄링 문제가 발생할 수 있습니다. 반드시 requests를 설정하는 것을 권장합니다.