IT/Kubernetes
쿠버네티스 ReplicaSet 사용법 (scale, 삭제, pod 제외)
엘티엘
2022. 1. 15. 11:59
ReplicaSet 이란?
레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다.
[출처] https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicaset/
쉽게 정리하면, 가용성의 위해 동일한 파드의 개수를 유지하는 기능이다.
예를 들어 A라는 pod의 개수를 3개로 유지하기로 설정했다면, Node가 다운되어 pod가 사라져도 다른 Node에 pod를 자동으로 생성해서 pod를 3개로 유지하고, 다른 운영자가 pod 를 실수로 지우거나 새로 생성하더라도 쿠버네티스 자체에서 pod의 개수가 3개가 되도록 지속적으로 유지한다.
ReplicaSet 만들기
ReplicaSet 리소스를 생성해야 한다. 생성시 pod개수 및 pod 정보를 입력해야 한다.
- RepliicaSet 리소스를 생성
- yaml 파일 기준, kind: ReplicaSet
- kubectl create -f [yaml] 으로 생성
- pod 개수 설정
- spec.replica=3
- 개수를 유지할 pod 를 선택
- ReplicaSet은 label을 기준으로 일치하는 pod 선택
- spec.selector 내 원하는 label 입력
- 만일 pod 생성후 pod의 label 이 변경되거나 삭제된다면, ReplicaSet은 pod가 삭제된 것으로 인지하고 추가 생성함
아래는 ReplicaSet 예제 이다.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
spec:
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google_samples/gb-frontend:v3
ReplicasSet 사용예시
1) Pod의 ReplicaSet 확인하기
아래 명령어 실행시 metadata.ownerReferences 에서 관련정보 확인이 가능하다.
kubectl get pod [pod] -o yaml
2) ReplicaSet 리소스만 삭제 (Pod 유지)
delete 실행시 --cascade=orphan 옵션을 추가한다. 옵션없이 delete를 실행하면 pod도 같이 삭제된다.
kubectl delete rs --cascade=orphan [ReplicaSet]
3) Pod를 ReplicasSet에서 제외하기
Pod의 Label을 수정한다.
- kubectl describe rs 을 통해, Pod Template의 Label 확인
- kubectl edit pod 를 통해, 제외하고자 하는 Pod에서 해당 Label 삭제
4) ReplicaSet 개수 조정하기 (scale)
spec.replicas의 값을 변경하면 된다. (아래 3가지 방법중 원하는 방법 사용)
kubectl scale --replicas=5 rs [ReplicaSet]
kubectl edit rs [ReplicaSet]
kubectl apply -f [yaml]
삭제되는 Pod는 아래순서로 결정된다.
- Pending 상태인 (+ 스케줄링할 수 없는) 파드가 먼저 스케일 다운된다.
- controller.kubernetes.io/pod-deletion-cost 어노테이션이 설정되어 있는 파드에 대해서는, 낮은 값을 갖는 파드가 먼저 스케일 다운된다.
- 더 많은 레플리카가 있는 노드의 파드가 더 적은 레플리카가 있는 노드의 파드보다 먼저 스케일 다운된다.
- 파드 생성 시간이 다르면, 더 최근에 생성된 파드가 이전에 생성된 파드보다 먼저 스케일 다운된다. (LogarithmicScaleDown 기능 게이트가 활성화되어 있으면 생성 시간이 정수 로그 스케일로 버킷화된다)
- 모든 기준에 대해 동등하다면, 스케일 다운할 파드가 임의로 선택된다.
반응형