⭐ 핵심 개념 정리
Deployment
Pod와 ReplicaSet에 대한 관리를 제공하는 단위다. 단순히 Pod를 실행하는 것을 넘어, 아래와 같은 기능을 포함한다.
- Self-healing : Pod가 삭제되거나 죽으면 자동으로 다시 생성한다
- Scaling : replica 수를 조정해 Pod 개수를 동적으로 늘리거나 줄인다
- Rollout : 서비스 중단 없이 새로운 버전으로 업데이트한다
Service
쿠버네티스에 배포한 Pod를 외부에서 접근하기 쉽게 추상화한 리소스다.
- Pod는 생성될 때 IP를 할당받지만, 죽었다가 다시 살아나는 과정에서 IP가 재할당되기 때문에 고정된 IP로 접근할 수 없다
- 따라서 클러스터 외부 또는 내부에서 Pod에 접근할 때는 Pod IP가 아닌 Service를 통해 접근한다
- Service는 고정된 IP를 가지며, 하나 또는 여러 개의 Pod와 매칭된다
⭐ Deployment YAML 파일 작성하기
1) Deployment를 정의할 YAML 파일을 작성한다.
vi deployment.yaml을 실행해 vi 편집기를 열고, i를 눌러 입력 모드로 들어간 뒤 아래 내용을 입력한다.
nginx 컨테이너를 실행하는 Pod를 3개 생성하도록 설정한 코드이다.
vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
입력 후 Esc → :wq를 입력해 저장하고 종료한다.
2) 작성한 deployment.yaml 파일 내용이 제대로 저장되었는지 확인한다.
cat deployment.yaml
⭐ 클러스터 시작 및 Deployment 생성하기
1) Docker 드라이버를 사용하여 minikube 클러스터를 시작한다.
minikube start --driver=docker
2) deployment.yaml 파일을 클러스터에 적용하여 Deployment를 생성한다.
kubectl apply -f deployment.yaml
3) Pod 생성 상태를 확인한다. replicas: 3 설정이 반영되어 nginx Pod 3개가 생성되는 것을 확인할 수 있다.
kubectl get pod

⭐ Self-healing 확인하기
1) 실행 중인 Pod 중 하나를 삭제한다. Pod 이름은 kubectl get pod로 확인한 이름을 사용한다.
kubectl delete pod {삭제할 Pod 이름}
2) 삭제 직후 Pod 목록을 다시 확인한다.
Deployment가 삭제된 Pod를 자동으로 새로 생성해 총 3개의 Pod가 Running 상태로 유지되는 것을 확인할 수 있다.
kubectl get pod
Deployment는 지정된 replica 수를 항상 유지하기 위해 삭제된 Pod를 자동으로 다시 생성한다.
이것이 Self-healing이다.
⭐ Replica 수 조정하기 (Scale)
1) Replica 수를 10개로 확장한다.
kubectl scale deployment/nginx-deployment --replicas=10
2) Deployment와 Pod 상태를 확인한다. Deployment가 10/10 READY 상태가 되고, Pod 10개가 Running 상태로 확인된다.
kubectl get deployment
kubectl get pod
3) Replica 수를 1개로 축소한다.
kubectl scale deployment/nginx-deployment --replicas=1
4) Pod 상태를 확인한다. 불필요해진 Pod들이 Terminating 상태를 거친 뒤, 최종적으로 Pod 1개만 Running 상태로 남는다.
kubectl get pod
5) Pod 상태 변화를 실시간으로 확인한다. 종료 시 Ctrl + C를 누른다.
kubectl get pod -w

⭐ Deployment 삭제하기
1) nginx-deployment를 삭제하고, Pod가 정상적으로 종료되는지 실시간으로 확인한다.
Deployment를 삭제하면 해당 Deployment가 관리하던 Pod도 함께 종료된다.
kubectl delete deployment nginx-deployment
kubectl get pod -w
2) 모든 Pod가 종료되었는지 최종 확인한다.
kubectl get pod

'클라우드응용SW개발' 카테고리의 다른 글
| [Cloud] 14주차. Azure AI 서비스, Azure Language Service 실습 (0) | 2026.06.04 |
|---|---|
| [Cloud] 13주차. Azure CLI와 ACR을 활용한 Docker 컨테이너 웹앱 배포 (0) | 2026.06.04 |
| [Cloud] 12주차-2. Minikube + kubectl 실습 (0) | 2026.06.04 |
| [Cloud] 12주차-1. 쿠버네티스와 Minikube (0) | 2026.06.04 |
| [Cloud] 11주차-2. Docker 설치 및 이미지 빌드 실습 (0) | 2026.06.03 |