본문 바로가기
INFRA/DevOps

[K8s] ReplicationController & ReplicaSet

by BTC_프로틴 2022. 9. 26.

ReplicationController란?

<이미지 출처 : Kubernetes & Docker Part 2 >

 

  • 요구하는 pod의 개수를 보장하며 pod 집합의 실행을 항상 안정적으로 유지하는 것을 목표
    • 요구하는 pod의 개수가 부족하면 template를 이용해 pod를 추가
    • 요구하는 pod 수 보다 많으면 최근에 생성된 pod를 삭제
  • 기본구성
    • selector
    • replicas
    • template
      • 반드시 selector의 key, value 값을 labels로 가지고 있어야 함
  • definition
apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-nginx
spec:
  replicas: 3
  selector:
    app: web
  template:
    metadata:
      name: nginx-pod
      labels:
        app: web
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
  • replicationcontroller 및 container 생성 확인
kubectl get replicationcontrollers RCNAME
2kubectl describe rc RCNAME
kubectl get pod --show-labels
  • container 개수 수정
kubectl edit replicationcontroller RCNAME
kubectl scale replicationcontroller RCNAME --replicas=2

 

Replicaset이란?

<이미지 출처 : Kubernetes & Docker Part 2 >

 

  • Replication controller와 성격은 동일하게 pod의 개수 보장
  • Replication controller보다 풍부한 selector
    • matchExpressions 연산자
      • In : key와 values를 지정하여 key, value가 일치하는 pod만 연결
      • NotIn : key는 일치하고 value는 일치하지 않는 pod에 연결
      • Exists : key에 맞는 label의 pod를 연결
      • DoesNotExist : key와 다른 label의 pod를 연결
  • --cascade=orphan 옵션을 통해서 연쇄 삭제 기능 비활성화 (default = true)
  • definition
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: rs-web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      name: nginx-pod
      labels:
        app: web
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
        ports:
        - containerPort: 80
  • 동작 확인
kubectl get replicaset RSNAME
kubectl get rs RSNAME
  • scale in/out
kubectl scale replicaset RSNAME --replicas=2

 

 

참고 :

[따배쿠] 6-1 Controller - ReplicationController란?
[따배쿠] 6-2. ReplicaSet(ReplicationController와의 차이점은?) 쿠버네티스 pod 개수 보장

댓글