본문 바로가기
인프라/Kubernetis

[minikube] 레플리카셋(replicaset)과 디플로이먼트(Deployment) (2)

by devthrive 2025. 8. 13.
반응형

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

deploy.yaml 실행

터미널 새로 접속해서 k get pod -w 하여 실시간 모니터링을 한다.

그러면 3개가 running으로 정상 실행 된거로 확인이 된다.

Pod 실시간 모니터링

정상이 되었으니 접속이 되는지 확인이 필요 함

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

/usr/share/nginx/index.hthml

 

v2으로 수정 후 재배포 

image: feellab/k8s:v2로 변경 후 재배포 한다.

 

재배포 완료되었는지 확인 필수

k get pod 파드 정보 확인
k get pod -w 실시간 Pod 변경 확인

 

정상 작동 하였으면

포트 포워딩도 새로 해야함

재배포 되면 필수로 포트포워딩 새로 해야함

 

<h1>이 v2로 변경 되었으면 정상!

/usr/share/nginx/index.html

다시 rollback 하려면

k rollout undo deployment feel-deployment

rollback

기존에 있던 pod 지우고 새로운 pod으로 creating 중

k get pod -w 실시간 모니터링

 

다시 포트포워딩 해야함

port-forward

 

<h1>이 v1 으로 변경 되었다는 것을 확인 할 수가 있음

 

해당 deployment가 롤백 되었는지 확인 하려면

아래 명령어 치고 Strategy Type이 RollingUpdate로 되어있으면 롤백 된걸로 확인.

k describe deployments.apps feel-deployment

deployment 상세 정보 확인

 

Deployment와 Replicaset의 차이 요약

특징 Raplicaset Deployment
주요기능 Pod 복제본 관리 Replicaset 관리 및 롤링 업데이트
업데이트 직접 새로운 Replicaset 생성 필요 자동 롤링 업데이트 지원
롤백 지원하지 않음 지원

 

 

- 참조 : 

   유튜브 감테크님 https://youtu.be/BdE745LqNMc?si=6qgX0zeCG16BTd01

반응형