본문 바로가기
가상화/Kubernetes

[Kubernetes] ReplicaSet

by JINJINC 2023. 5. 16.
728x90
반응형

▣ ReplicaSet

레플리카셋은 클러스터 안에서 움직이는 파드의 수를 유지하는 장치입니다.

클러스터의 파드의 실행을 항상 안정적으로 유지하는 것을 목표 로 명시된 파드 개수에 대한 가용성을 보증하는데 사용됩니다. 만약 애플리케이션 오류나 노드 장애 등으로 파드가 정지된 경우 레플리카셋 이 자동으로 새로운 파드를 시작합니다.

 

replica 구조

레플리카셋은 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

728x90
반응형

'가상화 > Kubernetes' 카테고리의 다른 글

[Kubernetes] Deployment  (0) 2023.05.16
[Kubernetes] kubectl  (0) 2023.05.12
[Kubernetes] Cluster 전체구조  (0) 2023.05.12

댓글