728x90
반응형
출처
Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스
Certified Kubernetes Administrator (CKA) with Practice Tests(Udemy)
ReplicaSet
What is ReplicaSet?
쿠버네티스에서 특정 갯수의 Pod를 항상 유지하도록 보장하는 리소스
ReplicaSet의 필요성
- Stateful: 지정된 수의 Pod를 유지하기 위해 현재 상태를 지속적으로 모니터링하고 조정한다.
- AutoScailing: App의 요구에 따라 Pod의 수를 조절할 수 있어, 리소스의 활용도를 극대화하고 운영비를 절감할 수 있다.
- 롤링업데이트: 새로운 버전의 Pod를 생성하고 기존의 Pod를 점진적으로 교체하는 롤링업데이트를 지원하여 서비스 중단 없이 애플리케이션을 업데이트할 수 있다.
- 로드밸런싱: ReplicaSet이 여러 개의 Pod를 생성하고 관리함으로써, 외부에서 오는 트래픽을 여러 인스턴스로 분산시켜 로드밸런싱을 지원한다. 일반적으로 서비스와 함께 사용된다.(직접적으로 수행하지는 않음)
ReplicaSet의 사용 시기
- Deployment: 트래픽 증가나 감소에 따라 수평적으로 Scailing할 때 주로 사용된다.
- Scailing: 고가용성이 중요한 환경에서 장애가 발생했을 때 빠르게 복구할 수 있도록 도와준다.
- Test/Development: 다양한 환경에서 Pod의 복제를 필요로 하는 테스트 및 개발 과정에서도 자주 활용된다.
ReplicaSet의 적용 사례
- 여러 개의 웹 서버 인스턴스를 운영 중, 트래픽의 분산 처리가 필요할 때
- 데이터 처리를 병렬로 수행하기 위해 여러 개의 Pod를 생성할 때
- 각 서비스에 필요한 인스턴스를 유지할 때
ReplicaSet Yaml
#ReplicaSet yaml 구조
[root@]$ vi replicaset-yaml.yml
apiVersion: apps/v1 #사용하고 있는 버전을 지정(고정값)
kind: ReplicaSet #리소스의 종류(고정값)
metadata:
name: imfra-replicaset #ReplicaSet의 이름
labels:
app: imfra
type: replicaset
spec: #ReplicaSet의 사양을 정의
template: #복제할 Pod의 템플릿을 그대로 사용
metadata:
labels:
type: rolling-update-test
spec:
containers:
- name: nginx
image: nginx
replicas: 3 #복제를 원하는 Pod의 갯수
selector:
matchLabels: #label을 일치시키는 옵션(ReplicaSet에서 모니터링할 수 있는 키:값)
type: rolling-update-test
#ReplicaSet 생성
[root@]$ kubectl create -f replicaset-yaml.yml
replicaset "imfra-replicaset" created
#ReplicaSet 수정
#수정 후 재배포
[root@]$ kubectl replace -f replicaset-yaml.yml
#replica의 갯수를 수정
[root@]$ kubectl sacle --replicas=6 -f replicaset-yaml.yml
#typer과 name을 명시
[root@]$ kubectl sacle replicaset imfra-replicaset --replicas=6
#ReplicaSet 확인
[root@]$ kubectl get replicaset
NAME DESIRED CURRENT READY AGE
imfra-replicaset 3 3 3 15s
#Pod 확인
[root@]$ kubectl get po
NAME READY STATUS RESTARTS AGE
imfra-replicaset-159xs 1/1 Running 1 30s
imfra-replicaset-ho24n 1/1 Running 1 30s
imfra-replicaset-9aboz 1/1 Running 1 30s
728x90
반응형
'클라우드 > 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 네임스페이스 (0) | 2024.11.10 |
---|---|
[쿠버네티스] 서비스 (0) | 2024.11.09 |
[쿠버네티스] ETCD (0) | 2024.09.21 |
[쿠버네티스] Container Runtime Interface (CRI) (0) | 2024.09.16 |
[클라우드/쿠버네티스] initContainers (1) | 2024.09.11 |
댓글