본문 바로가기
인프라/Kubernetis

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

by devthrive 2025. 8. 12.
반응형

기존 Pod는 임시적인 리소스로 단일 인스턴스로 실행하는데의 초점이 맞춰짐 (자동복구x)

 - 스스로 관리를 하지 않음

 - 고유한 식별자를 가짐

 - 내구성 보장이 안됨

 - 짧은 수명을 가지도록 설계

 

Pod를 관리하기 위해서 레플리카셋(Replicaset) 과 디플로이먼트(Deployment가 있음

 

Replicaset이란 무엇인가?

 - Pod의 복제본 관리를 하고 장애 발생 시 자동 복구를 함

  • 동일한 Pod을 원하느 수 만큼 실행 
  • Pod이 삭제 되거나 비정상적으로 동작할 경우 자동으로 새 Pod을 생성함
  • Pod 복제와 복구는 적합하지만 업데이트와 롤백 같은 기능은 없음
vi rs.yaml
 - vi를 통해 rs.yaml을 만들어 아래 양식을 작성한다.
 
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-replicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.21

 

 

(1) apiVersion
 - apps/v1
    ReplicaSet, Deployment 등의 리소스가 속한 API 그룹과 버전.
(2) kind
 - ReplicaSet
   생성할 Kubernetes 리소스의 종류.
(3) metadata
 - name: 리소스의 이름. 네임스페이스 안에서 유일.
   여기에 설정한 이름으로 kubectl get replicaset 등 조회 가능.
(4) spec

   ReplicaSet의 핵심 동작 설정이 들어가는 부분입니다.

replicas: 유지할 Pod 개수 (3 → 항상 3개 유지)
selector: 어떤 라벨을 가진 Pod을 관리할지 지정
예: app=nginx 라벨 가진 Pod 관리
template: 새로 생성할 Pod의 스펙
labels: selector와 동일하게 맞춰야 함
containers: Pod 안에서 실행할 컨테이너 정보
name: 컨테이너 이름
image: 사용할 이미지 (여기서는 nginx:1.21)

 - 참고) selector에 있는 labels과 tamplate에 있는 laels 이름은 필히 동일하게 맞춰야함 안그럼 오류가 뜸

k apply -f rs.yaml
 - rs.yaml을 실행함

 

다른 터미널창 하나 더열어서 실시간 모니터링

k get pods -w
 - pods의 실시간 모니터링

Replicaset으로 실행된 Pod은 지워 지지 않음

 

해당 Pods 조회

k get pods

현재 실행된 Pod 상태 조회

 

사용중인 Pods 삭제

k delete pods nginx-replicaset-62sd9

nginx-replicaset-62sd9해당 Pod은 삭제 되었지만

nginx-replicaset-x4mjz가 새롭게 복구 됨

 

실시간 모니터링

nginx-replicaset-62sd9해당 Pod은 Terminating 되어있고,

nginx-replicaset-x4mjz해당 Pod은 Pending  -> ContainerCreating -> Running 상태로 되어

실행 하게 됨.

 

replicaset 삭제 방법

pod은 삭제가 안됨으로 rs(replicaset)을 삭제를 하면 됨

kubectl delete rs nginx-replicaset

실행 중인 pod 정보

 

해당 replicaset에 해당 하는 pod들이 전부 Terminating 됨

실시간 pods 모니터링

반응형