Replicaset은 Pod 복제와 복구에는 적합하지만
업데이트와 롤백같은 기능은 없음
Deployment는 Resplicaset을 관리하며, 애플리케이션 배포, 업데이트, 롤백등 고급 기능을 제공
롤링업데이트 : 새버전의 애플리케이션을 무중단으로 배포
롤백: 문제가 생긴 경우 이전 상태로 되돌림
스케이링: Replicaset을 확장하거나 축소
(1) apiVersion
apps/v1
Deployment, ReplicaSet 등이 속한 API 그룹과 버전입니다.
(2) kind
Deployment
생성할 Kubernetes 리소스 종류.
Pod를 직접 만들지 않고, 내부적으로 ReplicaSet을 생성·관리하여 Pod 개수를 유지하고 롤링 업데이트를 지원합니다.
(3) metadata
name: feel-deployment
- 리소스의 이름입니다. 네임스페이스 내에서 유일해야 합니다.
kubectl get deployment로 조회할 때 이 이름이 표시됩니다.
(4) spec
Deployment의 핵심 동작을 정의하는 부분.
replicas: 3 → 항상 동일한 스펙의 Pod 3개를 유지합니다.
selector:
어떤 라벨을 가진 Pod을 관리할지 지정합니다.
matchLabels: app=feel
- 라벨이 붙은 Pod만 관리.
template:
새로 생성될 Pod의 설계도
metadata:
labels:
app: feel
반드시 selector.matchLabels와 동일해야 합니다.
spec.containers:
Pod 안에 들어갈 컨테이너 목록
name: feellab → 컨테이너 이름
image: feellab/k8s:v1 → 해당 이미지를 사용해 컨테이너 실행
- 참고) selector와 template의 labels 값이 정확히 동일해야 Deployment가 정상 동작합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: feel-deployment
spec:
replicas: 3
selector:
matchLabels:
app: feel
template:
metadata:
labels:
app: feel
spec:
containers:
- name: feellab
image: feellab/k8s:v1
터미널 새로 접속해서 k get pod -w 하여 실시간 모니터링을 한다.
그러면 3개가 running으로 정상 실행 된거로 확인이 된다.
정상이 되었으니 접속이 되는지 확인이 필요 함
curl localhost:80
- curl을 통해 80이 접속이 되는지 확인
curl 사용시 서버에 연결 할 수 없다고 뜸
포트 포워딩을 안해서 연결이 안되는 는거임
Pod의 네트워크 특성
- 각 Pod는 클러스터 내부에서만 유효한 고유한 IP 주소가 있음
- Pod IP는 클러스터 내부 네트워크에서만 접근 가능하고 클러스터 외부에서는 직접 접근 불가
Pod는 클러스터 외부에 노출되어 있지 않고, 외부에서 직접 IP나 포트를 통해 접근이 불가능합니다.
- 접속을 하려면 Service 같은 중간 연결 고리가 필요, 임시로 Port-foward로 접속 가능
포트 포워딩 셋팅
k port-forward deployments/feel-deployment 8080:80
정상 작동하는지 curl을 통해 확인
<h1>이 v1으로 확인 됨
curl localhost:8080
v2으로 수정 후 재배포
image: feellab/k8s:v2로 변경 후 재배포 한다.
재배포 완료되었는지 확인 필수
정상 작동 하였으면
포트 포워딩도 새로 해야함
<h1>이 v2로 변경 되었으면 정상!
다시 rollback 하려면
k rollout undo deployment feel-deployment
기존에 있던 pod 지우고 새로운 pod으로 creating 중
다시 포트포워딩 해야함
<h1>이 v1 으로 변경 되었다는 것을 확인 할 수가 있음
해당 deployment가 롤백 되었는지 확인 하려면
아래 명령어 치고 Strategy Type이 RollingUpdate로 되어있으면 롤백 된걸로 확인.
k describe deployments.apps feel-deployment
Deployment와 Replicaset의 차이 요약
특징 | Raplicaset | Deployment |
주요기능 | Pod 복제본 관리 | Replicaset 관리 및 롤링 업데이트 |
업데이트 | 직접 새로운 Replicaset 생성 필요 | 자동 롤링 업데이트 지원 |
롤백 | 지원하지 않음 | 지원 |
- 참조 :
'인프라 > Kubernetis' 카테고리의 다른 글
[minikube]Pod, Replicaset, Deployment 실습 하기 (0) | 2025.08.14 |
---|---|
[minikube] 레플리카셋(replicaset)과 디플로이먼트(Deployment) (1) (2) | 2025.08.12 |
[minikube] 쿠버네티스에서 왜 Pod 단위로 관리할까? (1) | 2025.08.11 |
[minikube] kubectl 자동완성 기능 (1) | 2025.08.11 |
[minikube] 가상머신에 minikube 설치하기 (1) | 2025.08.08 |