728x90
■ 쿠버네티스(Kubernetes) 레플리카셋 (ReplicaSet) 개요
- 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것을 목적으로 한다. 즉, 정의된 수량 만큼의 파드를 유지하여 가용성을 모증하는데 사용 된다.
- 레플리카셋을 단독으로 사용하는 것은 권장하지 않으며, 선언적 업데이트를 수행하는 디플로이먼트라는 상위 개념이 존재 하기 떄문에 레플리카셋을 직접 사용하기 보다 디플로이먼트를 사용하는 것을 권장 한다.
- 사용자는 레플리카셋 오브젝트를 직접 조작할 필요 없이 디플로이먼트를 사용하고 이를 통해서 레플리카셋을 제어하는 방식이 권장 된다.
- 디플로이먼트에 의해서 생성된 레플리카셋만 제어 가능하고, 사용자에 의해서 생성된 레플리카셋은 제어가 불가능 하다.
■ 쿠버네티스(Kubernetes) 레플리카셋 (ReplicaSet) 사용 사례
- 단순 업무 수행
- 애플리케이션 버전 관리 및 업데이트가 필요하지 않고, 단순히 특정 수량의 파드 유지만 필요한 경우
- 단순한 백그라운드 작업을 수행하는 워커 파드가 항상 일정 수 유지 되어야 하는 경우
- 새로운 애플리케이션 버전 테스트와 같이 간단한 테스트 및 디버킹 작업을 수행 할 때
- 레거시 시스템과 통합
- 기존 시스템이 레플리카셋과 더 적합한 경우
- 점진적인 고도화 단계로써 디플로이먼트를 사용한 선언적 업데이트 사용보다 레플리카셋으로 초기 구성 이후 디플로이먼트로 고도화가 필요한 경우
■ 쿠버네티스(Kubernetes) 레플리카셋 (ReplicaSet) 주의 사항
- 레플리카셋에서 생성된 파드를 관리하는 방법은 레이블을 이용하여 관리한다. 레플리카셋의 셀렉터가 레이블을 사용하여 파드가 특정 레플리카셋에 의해 생성된 파드 임을 확인 한다.
- 파드의 레이블이 레플리카셋에서 정의한 레이블과 일치하게 된다면 레플리카는 해당 파드를 인식하게 되고 해당 파드를 레플리카의 파드로 획득하게 된다. 결과적으로 의도하지 않은 동작이 발생하게 된다
# 레플리카셋 템플릿
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: 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
---
# 파드 템플릿
apiVersion: v1
kind: Pod
metadata:
name: pod1
labels:
tier: frontend
spec:
containers:
- name: hello1
image: gcr.io/google-samples/hello-app:2.0
- 예제 코드와 같이 레플리카셋의 `.spec.selector.matchLabels` 항목과 파드 템플릿의 `.metadata.labels` 항목이 동일할 경우 레플리카셋은 파드 템플릿으로 생성된 pod1을 획득하게 된다.
- 결과적으로 레플리카셋으로 생성된 3개의 파드중 하나를 중지하고 pod1을 자신의 그룹에 넣게 된다. 이는 의도하지 않은 결과로써 혼란을 초래할 수 있다. 이러한 이슈는 디플로이먼트를 사용해도 동일하게 발생 할 수 있으니 셀렉터 및 레이블 관리에 더 신경써야 한다.
728x90
'K8S' 카테고리의 다른 글
쿠버네티스(Kubernetes) 디플로이먼트 (Deployment) 스케일링 (0) | 2024.09.22 |
---|---|
쿠버네티스(Kubernetes) 디플로이먼트 (Deployment) 롤백 & 상태 (0) | 2024.09.13 |
쿠버네티스(Kubernetes) 디플로이먼트 (Deployment) 생성 및 업데이트 (2) | 2024.09.11 |
쿠버네티스(Kubernetes) 중단 (Disruption) (0) | 2024.08.30 |
쿠버네티스(Kubernetes) NameSpace CPU 자원 할당 (1) | 2024.08.25 |