로컬 쿠버네티스 실습: Deployment와 Service로 웹 애플리케이션 배포하기
로컬 쿠버네티스 실습 ① 간단한 웹 애플리케이션 배포 흐름 따라가기
minikube나 kind로 로컬 클러스터를 준비했다면,
이제는 직접 하나 올려보는 단계가 가장 중요하다.
이 글에서는 복잡한 예제 대신,
- 컨테이너 하나
- Deployment 하나
- Service 하나
이 세 가지만으로
쿠버네티스에서 애플리케이션이 어떻게 배포되고 노출되는지를 처음부터 끝까지 따라가본다.
실무에서 가장 자주 반복하는 기본 흐름이기도 하다.
실습 목표와 전제
이번 글의 목표는 다음이다.
- Deployment로 애플리케이션 배포
- Pod 생성과 관리 방식 확인
- Service를 통한 접근 구조 이해
전제 조건은 다음 정도면 충분하다.
- 로컬 쿠버네티스 클러스터(minikube 또는 kind)
- kubectl 사용 가능
- Docker 이미지 하나
1. 예제 애플리케이션 준비
예제는 최대한 단순하게 간다.
HTTP 요청을 받으면 문자열을 반환하는 웹 서버 정도면 충분하다.
중요한 건 애플리케이션 자체가 아니라 배포 흐름이다.
실무에서도 처음 구조를 확인할 때는
항상 이런 단순한 서비스로 시작하는 편이 낫다.
2. Deployment 정의하기
쿠버네티스에서는 Pod를 직접 띄우지 않고
Deployment를 통해 관리한다.
Deployment는 다음을 한 번에 정의한다.
- 어떤 이미지로 실행할지
- Pod를 몇 개 유지할지
- 업데이트 전략은 어떻게 할지


핵심 포인트
- 처음에는 replicas를 1로 시작해도 된다
- 설정이 바뀌면 Pod는 교체된다
- Pod 이름은 고정되지 않는다
이 단계에서 중요한 건
Pod를 직접 컨트롤하지 않는다는 점이다.
3. Pod 상태 확인하며 흐름 이해하기
Deployment를 적용하면
쿠버네티스 내부에서는 이런 일이 순서대로 일어난다.
- Deployment 생성
- ReplicaSet 생성
- Pod 생성
- Node에 스케줄링
kubectl get deployment
kubectl get replicaset
kubectl get pod
실제로 이 명령들을 순서대로 쳐보면,
쿠버네티스 리소스 간의 관계가 눈에 들어오기 시작한다.
“아, Deployment가 직접 Pod를 만드는 게 아니구나”
이 감각을 잡는 게 중요하다.
4. Service로 Pod에 접근하기
Pod는 직접 접근 대상이 아니다.
IP도 바뀌고, 언제든 사라질 수 있다.
그래서 항상 Service를 앞에 둔다.


로컬 실습에서는 보통 다음 중 하나를 쓴다.
- ClusterIP + 포트 포워딩
- NodePort
이번 단계의 목적은
“Service가 Pod 앞의 고정 진입점”이라는 개념을 이해하는 것이다.
5. 실제 요청 보내보기
Service까지 준비되면
이제 실제로 요청을 보내본다.
curl http://<service-address>
이 한 번의 요청으로 다음을 확인할 수 있다.
- Pod가 정상 실행 중인지
- Service가 Pod로 트래픽을 전달하는지
- 컨테이너 로그가 잘 찍히는지
kubectl logs <pod-name>
로그를 함께 보면
“요청 → Service → Pod → 컨테이너” 흐름이 연결된다.
6. Pod를 일부러 지워보자
여기서 꼭 한 번 해봐야 할 실습이 있다.
kubectl delete pod <pod-name>
잠시 후 다시 확인해보면,
kubectl get pod
- 새로운 Pod가 자동으로 생성된다
- 이름이 바뀐다
- 하지만 서비스는 계속 살아 있다
이 경험이
쿠버네티스의 핵심 철학을 가장 직관적으로 보여준다.
Pod는 사라져도,
“원하는 상태”는 유지된다.
7. replicas를 늘려보며 변화 확인하기
Deployment의 replicas를 2나 3으로 늘려보면,
- Pod 개수가 즉시 늘어난다
- Service 뒤에 Pod가 여러 개 생긴다
- 요청이 분산되는 구조가 된다

이 단계까지 오면
쿠버네티스의 기본적인 운영 흐름은 한 번 체험한 셈이다.
실제로 해보면 느끼는 포인트
이 실습을 직접 해보면
대부분 다음 지점에서 이해가 깊어진다.
- Pod는 정말로 쉽게 바뀐다
- Service 없이는 운영이 어렵다
- Deployment가 관리의 중심이다
문서로 읽을 때보다
훨씬 구조가 단순하게 느껴질 가능성이 크다.
정리하며
이번 글에서는
가장 단순한 예제를 통해 쿠버네티스 배포 흐름 전체를 따라가봤다.
- Deployment로 애플리케이션 관리
- Pod는 교체 가능한 실행 단위
- Service는 안정적인 접근 지점
다음 글에서는
이 예제를 조금 확장해서,
- ConfigMap으로 설정 분리
- requests/limits 적용
- 롤링 업데이트 과정 확인
즉, “운영에 가까운 형태”로 한 단계 더 발전시키는 흐름를 정리해볼 예정이다.