반응형
목차
- Deployment란 무엇인가?
- ReplicaSet과 Deployment의 차이
- Deployment의 주요 기능
- YAML 예제와 구성 요소 설명
- Deployment 생성 및 배포 실습
- Rolling Update와 Rollback
- 자주 묻는 질문(FAQ)
- 핵심 요약
Deployment란 무엇인가?
Deployment는 Kubernetes에서 가장 널리 사용되는 리소스입니다.
간단히 말하면, 애플리케이션의 배포, 확장, 업데이트, 복구를 손쉽게 관리할 수 있도록 도와주는 고급 리소스입니다.
ReplicaSet을 내부적으로 생성·관리하며, 다음과 같은 이유로 더 많이 사용됩니다.
- 선언형 배포
- 자동 롤링 업데이트
- 버전 관리 및 롤백 기능
ReplicaSet과 Deployment의 차이
항목 | ReplicaSet | Deployment |
---|---|---|
목적 | 고정된 수의 Pod 유지 | Pod 배포 및 업데이트 관리 |
롤링 업데이트 | 직접 불가능 | 자동 처리 가능 |
버전 롤백 | 없음 | 이전 버전으로 복원 가능 |
주 사용처 | 실험적 혹은 세부 제어 필요 시 | 일반적인 서비스 배포 |
Deployment는 실제로도 대부분의 서비스 운영 환경에서 사용됩니다.
Deployment의 주요 기능
- Pod 수 관리: ReplicaSet과 동일하게
replicas
수 조절 가능 - 자동 업데이트: 새로운 이미지로 교체할 때 무중단 배포
- 롤백 지원: 문제가 생겼을 때 이전 상태로 쉽게 복구 가능
- 이중 관리: 여러 버전의 ReplicaSet을 자동으로 관리
Deployment YAML 예제
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
주요 필드 설명
replicas
: 실행할 Pod 수selector
: 관리 대상 Pod의 라벨 지정template
: 실제 Pod 템플릿 (컨테이너 설정 등)
Deployment 생성 및 관리 명령어
생성
kubectl apply -f deployment.yaml
상태 확인
kubectl get deployments
kubectl get rs
kubectl get pods
롤링 업데이트 (Rolling Update)
Deployment의 가장 큰 장점 중 하나는 무중단 업데이트입니다.
이미지 업데이트 예시
kubectl set image deployment/nginx-deployment nginx=nginx:1.22
업데이트는 단계적으로 이루어지며, 서비스는 중단되지 않습니다.
롤백 (Rollback)
업데이트 중 문제가 발생했다면, 이전 상태로 쉽게 복원할 수 있습니다.
가장 최근 버전으로 롤백
kubectl rollout undo deployment/nginx-deployment
버전 히스토리 확인
kubectl rollout history deployment/nginx-deployment
자주 묻는 질문 (FAQ)
Q1. Deployment는 ReplicaSet을 어떻게 관리하나요?
Deployment는 내부적으로 ReplicaSet을 생성하고, 업데이트 시 새로운 ReplicaSet을 만들어 점진적으로 교체합니다.
Q2. Pod가 모두 업데이트되기까지 시간이 오래 걸리면 어떻게 하나요?maxUnavailable
, maxSurge
설정을 조정하여 배포 속도를 조절할 수 있습니다.
Q3. 어떤 경우에 Deployment 대신 StatefulSet을 써야 하나요?
Pod에 고유한 ID, 네트워크 이름, 스토리지가 필요한 경우에는 StatefulSet이 더 적합합니다.
핵심 요약
개념 | 설명 |
---|---|
Deployment | Kubernetes에서 가장 많이 쓰이는 배포 리소스 |
Rolling Update | 새로운 버전으로 무중단 교체 가능 |
Rollback | 문제가 생겼을 때 이전 상태로 복원 |
ReplicaSet | Deployment 내부에서 자동으로 생성 및 관리됨 |
마무리
Deployment는 Kubernetes에서 실제 운영을 위한 표준 배포 방식입니다.
안정적인 업데이트, 빠른 롤백, 확장성까지 갖춘 강력한 리소스죠.
반응형
'개발 창고 > Server' 카테고리의 다른 글
Kubernetes Deployment 완전정복: Pod 배포와 업데이트 자동화의 핵심 리소스 (2) | 2025.08.03 |
---|---|
Kubernetes 레플리카셋(ReplicaSet) 완벽 이해하기 (2) | 2025.08.02 |
리소스 - Part1: 레플리카셋(ReplicaSet) (3) | 2025.07.31 |
네트워킹 - Part4: 네트워크 모델 살펴보기 (2) | 2025.07.30 |
네트워킹 - Part3 정리 (3) | 2025.07.29 |