CKA
(TIL) Kubernetes Deployment
심플코더
2025. 3. 16. 18:42
Kubernetes Deployment란
프로뎍선 환경, 즉 실제로 서비스를 이용자들에게 제공하는 환경에서 서버를 운영하는 경우 다양한 상황을 고려해야만한다.
단일 인스턴스가 아닌 여러 개의 웹 서버 인스턴스를 사용하면서 장애 상황에 대처할 수 있어야하며 롤백과 업데이트에 대한 내용또한 고려되어야한다.
이러한 요구사항을 충족하기 위한 개념이 Deployment이며 Deployment는 ReplicaSet을 감싸는 상위 개념에 해당한다.
Deployment의 주요 기능
Rolling Updates
한 번에 모든 Pod를 업데이트하지 않고 순차적으로 새로운 버전으로 업데이트한다. 이를 통해 어플리케이션이 중단되지 않고 업데이트될 수 있다.
Rollback
업데이트 후 문제가 발생하면 이번 버전으로 되돌릴 수 있다.
Pause & Resume
변경 사항을 즉시 적용하지 않고 일시 중지 후 검토한 뒤 재개할 수 있다.
Self-healing
Pod이 비정상적으로 종료되면 자동으로 새로운 Pod를 생성하여 복구한다.
Deployment YAML 파일
Deployment 실행에 사용되는 예시 Yaml 파일은 다음과 같다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
labels:
app: my-app
spec:
replicas: 3 # 실행할 Pod 개수
selector:
matchLabels:
app: my-app # 이 레이블이 있는 Pod을 선택
template: # Pod 템플릿 정의
metadata:
labels:
app: my-app
spec:
containers:
- name: nginx-container
image: nginx:latest
각 필드는 다음과 같은 의미를 가진다.
필드명 | 설명 |
---|---|
apiVersion | Kubernetes API 버전을 의미한다 |
kind | 객체 유형을 의미하며 여기에서는 객체가 Deployment임을 의미한다. |
metadata | Deployment의 이름 및 레이블 설정을 의미한다 |
spec.replicas | 실행할 Pod 개수를 뜻한다 |
spec.selector | 관리할 Pod를 지정하는 Label을 의미한다 |
spec.template | Pod의 템플릿 정보를 의미한다 |
Deployment의 전체 리소스 확인
Deployment를 생성하면 쿠버네티스는 자동으로 ReplicaSet과 Pod를 생성한다.
관련된 객체를 한 번에 확인하려면 다음과 같은 명령어를 실행한다.
kubectl get all