▣ ReplicaSet
레플리카셋은 클러스터 안에서 움직이는 파드의 수를 유지하는 장치입니다.
클러스터의 파드의 실행을 항상 안정적으로 유지하는 것을 목표 로 명시된 파드 개수에 대한 가용성을 보증하는데 사용됩니다. 만약 애플리케이션 오류나 노드 장애 등으로 파드가 정지된 경우 레플리카셋 이 자동으로 새로운 파드를 시작합니다.
레플리카셋은 labelSelector의 조건에 따라 파드를 검색하여 가동 중인 파드의 수가 매니페스트 파일의 replicas의 수와 일치하는지 아닌지를 확 인합니다.
만약 가동중인 파드의 수가 부족한 경우 새로 파드를 추가하고, 파드의 수가 많을 때는 여분의 파드를 정지시킵니다. 따라서 가동 중 인 애플리케이션의 파드 수를 변경하고 싶을 때는 레플리카셋의 replicas의 값을 수정하기만 하면 됩니다.
[1] 기본항목
필드 | 데이터형 | 설명 | 예시 |
api/Version | 문자열 | API버전, 존재하지 않는 값을 설정하면 오류가 발생 | apps/v1 |
kind | 문자열 | 쿠버네티스 리소스의 종류 | ReplicaSet |
metadata | Object | 레플리카셋의 이름이나 Label과 같은 메타데이터 | name:photoview-rs |
spec | PodSpec | 레플리카셋의 상세정보를 설정 | |
[2] 레플리카셋 spec
필드 | 데이터형 | 설명 |
replicas | 정수 | 클러스터안에서 가동시킬 파드의 수, 기본값은 1 |
selector | LabelSelector | 어떤 피드를 가동시킬지에 대한 셀렉터, 파드의 Template에 설정된 라벨과 일치해야 한다. |
template | PodTemplateSpec | 실제로 클러스터 안에서 움직이는 파드의 수가 replicas에 설정된 파드의 수를 만족시키지않을때 새로 작성되는 파드의 템플릿 |
[3] Pod 템플릿
필드 | 데이터형 | 설명 |
metadata | Object | 템플릿의 이름이나 Label과 같은 데이터 |
spec | PodSpec | 피드의 상세정보르 설정 |
[4] Pod spec
spec.template 하위의 [spec] 필드에는 Pod의 상세 정보를 설정합니다. 특히 .spec.template.spec.containers[] 필드의 하위에 .name, .image, .ports[], .containerPort 필드를 이용해 컨테이너의 구체적인 명세를 설정합니다
< .yaml 파일 생성 >
vi [yaml_name].yaml
# [1] 기본 항목
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: nginx-replicaset
# [2] ReplicaSet 스펙
spec:
replicas: 3 # Pod의 수
selector:
matchLabels:
app: nginx-replicaset
# [3] Pod 템플릿
template:
metadata:
labels:
app: nginx-replicaset
env: prod
# [4] Pod 스펙
spec:
containers:
- image: nginx
name: nginx-replicaset
ports:
- containerPort: 80
< yaml 파일 실행>
# kubectl apply -f [yaml_name].yaml
< replicas 바꿔보기 >
|| 1. 명령어로 바꾸기
# kubectl scale replicaset.apps/nginx-replicaset --replicas=2
# kubectl scale replicaset.apps/nginx-replicaset --replicas=4
|| 2. edit로 수정하기
# kubectl edit replicaset.apps/nginx-replicaset
replicas를 1=>6으로 변경해보았습니다.
|| 3. yaml 파일 수정
# vi ex06.yaml
=> 1-> 6으로 수정하고 실행하기
# kubectl apply -f ex06.yaml
< replicas 삭제하기 >
# kubectl delete replicaset.apps/nginx-replicaset
or
# kubectl delete -f ex06.yaml
'가상화 > Kubernetes' 카테고리의 다른 글
[Kubernetes] Deployment (0) | 2023.05.16 |
---|---|
[Kubernetes] kubectl (0) | 2023.05.12 |
[Kubernetes] Cluster 전체구조 (0) | 2023.05.12 |
댓글