Cloud/Kubernetes
Kubernetes) Kubernetes ReplicaSet
Adım Kim
2022. 10. 21. 02:04
학습 목표 : k8s의 서비스가 지속되도록하는 ReplicaSet에 대해 알아본다.
ReplicaSet 이란?
- 쿠버네티스 프로젝트 초기부터 있던 Replication Controller의 발전형
- 정해진 개수의 pod가 항상 실행상태가 되도록 관리한다.
- 노드나 pod에 이상이생겨 사용할수 없을 때, 동일 cluster안의 다른 노드의 pod를 생성하고 실행한다.
- YAML 파일을 통해 사용자가 요구하는 상태가 되도록 pod를 관리할 수 있다.
ReplicaSet 사용해보기
- replicaset 설정 (replicaset-nginx.yaml)
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-nginx # name - replicaset 이름 설정
spec:
replicas: 3 # replicas - 유지할 파드개수를 설정하는 필드
selector: # selector - 관리할 레이블의 파드를 선택
matchLabels: # matchLabels - 레이블 체크 조건
app: my-nginx-pods-label # 탬플릿의 레이블 설정과 같게한다
template:
metadata:
name: my-nginx-pod # name - pod 이름 설정
labels: # labels - 템플릿 레이블 설정
app: my-nginx-pods-label
spec:
containers:
- name: nginx # name - 컨테이너 이름 설정
image: nginx:1.20.0 # image - 컨테이너에 사용할 이미지
ports: # ports - 컨테이너에 접속할 포트번호 설정
- containerPorts: 80
- replicaset 목록 확인
kubectl get replicasets
- replicaset 상태목록 설명
DESIRED : replicaset 설정시 지정한 pod의 개수
CURRENT : replicaset으로 동작하는 pod의 개수
- replicaset 상세정보 확인
kubectl describe replicaset/replicaset-nginx
# kubectl describe replicaset/<ReplicaSet 이름>
ReplicaSet 와 Pod
- pod는 레이블 기준으로 관리되고 replicaset 레이블을 지정하여 사용한다. replicaset 과 pod는 느슨하게 결합되어있다.
- replicaset 설정으로 생성된 pod를 삭제하면 지정된 개수만큼 pod를 생성한다.
- replicaset 설정으로 생성된 pod를 변경하면 변경된 pod를 제외하고 지정된 개수만큼 pod를 생성한다.
- replicaset pod를 한꺼번에 삭제할 때
kubectl delete replicaset <ReplicaSet이름>
- replicaset의 컨트롤러만 삭제하고 pod를 유지할 때
kubectl delete replicaset <Replicaset 이름> --cascade=orphan