기존 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
사용중인 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
해당 replicaset에 해당 하는 pod들이 전부 Terminating 됨
'인프라 > Kubernetis' 카테고리의 다른 글
[minikube] 쿠버네티스에서 왜 Pod 단위로 관리할까? (1) | 2025.08.11 |
---|---|
[minikube] kubectl 자동완성 기능 (0) | 2025.08.11 |
[minikube] 가상머신에 minikube 설치하기 (1) | 2025.08.08 |