본문으로 바로가기

Controller - ReplicationController란

category Kubernetes 2021. 7. 16. 02:13
반응형

Controller 란 

  • Pod의 개수를 보장하며 조절가능.

ReplicationController

  • 요구하는 Pod의 개수를 보장하며 파드 집합의 실행을 항상 안정적으로 유지하는것을 목표로 한다.
  • 요구하는 Pod의 개수가 부족하면 템플릿을 이용해 Pod를 추가
  • 요구하는 Pod 수 보다 많으면 최근에 생성된 Pod를 삭제

기본 구성

  • selector
  • replicas
  • template

Selector의 내용을 보고 replicas의 개수를 보장, 혹시라도 동작되고 있는 Pod들 중 라벨 셀렉터의 컨테이너와 일치하는 것이 있는것을 찾아서 개수가 다를경우 추가해주거나 줄인다.(템플릿의 내용을 참고해서)

 

실습 : replicationcontroller를 사용해보자 

apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-nginx
spec:
  replicas: 3
  selector:
    app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

replication controller를 사용해서 pod를 생성하는 yaml 파일의 예제이다.

1. kind: ReplicationController로 선언

2. replicas: 3 으로 selector 에서 참조하는 webui라는 라벨의 Pod를 3개 유지시켜달라 (spec이 다르더라도 라벨이 같으면 같은것으로 판단한다)

3. 컨테이너 템플릿을 참조해서 컨테이너를 생성/제거 

 

컨트롤러 생성 후 확인 (kubectl get replicationcontroller)  rc로 줄여서 확인해도 된다.

좀더 자세하게 확인 describe

desired는 요청한 갯수를 나타냄.

 

edit 명령어로 현재 동작하고 있는 컨트롤러를 수정 해본다.

kubectl edit replicationcontroller

replicas를 5로 수정해줘 본다.

 

<수정 전>
<수정 후>

nginx 컨테이너가 5개로 늘어난 것을 확인 할 수 있다. 이렇게 edit으로 파일의 내용을 수정해서 스케일 아웃을 진행할 수 있지만 명령어 한줄로도 스케일 아웃, 인이 가능하다.

 

명령어로 스케일 아웃/인 해보기

kubectl scale rc [metadata-name] --replicas=2 

가장 예전에 생성된 컨테이너 두개를 terminate해서 다운된것을 확인 할 수 있다.

 

edit 명령어로 rc를 확인해 보니 spec : replicas에도 2로 적용이 돼 있는것을 확인할 수 있다.

반응형