탕구리's 블로그

[Kubernetes] #6 Replication Controller & ReplicaSet 본문

devOps

[Kubernetes] #6 Replication Controller & ReplicaSet

탕구리당 2020. 6. 15. 23:43
반응형

** 해당 도서를 구매하며 학습해보며 내용을 정리하는 목적으로 글을 작성하였습니다.

** 문제가 되는 경우 말씀해주시면 조치를 취하도록 하겠습니다. 감사합니다 :)

 

 

 

쿠버네티스 컨트롤러 중에서도 오늘은 "Replication Controller와 ReplicaSet"에 대해서 정리를 진행하려 합니다.

"#4 컨트롤러 개념 정리"에서 간단하게 알아보았는데, Replication Controller와 ReplicaSet은 stateless 한 컨테이너를 관리합니다.

 

 

# 레플리케이션 컨트롤러(Replication Controller)

 

레플리케이션 컨트롤러는 쿠버네티스 프로젝트 초기부터 있었던 컨트롤러입니다.

앞서 말한 것처럼 레플리케이션 컨트롤러는 파드를 관리하며 파드의 개수가 항상 일정하도록 유지합니다.

 

예를 들어! 파드의 장애 혹은 다른 이유에 의해 컨테이너가 중지된 경우, 레플리케이션 컨트롤러는 이를 감지하고 새로운 파드를 실행합니다.

컨트롤러의 사용이 아닌 파드만 단독으로 운영하는 경우 이런 문제 상황에 대처하기 어렵습니다. 

 

 

 

#레플리카 세트(Replica Set)

 

레플리케이션 컨트롤러에서 한층 발전된 컨트롤러가 레플리카 세트입니다.

레플리케이션 컨트롤러와 레플리카 세트는 거의 동일한 역할을 하며, 레플리카 세트는 집합 기반의 셀렉터를 지원합니다.

또한, 레플리카셋은 rolling-update를 지원하지 않기에 rolling-update를 위해서는 deployment를 함께 사용해야 합니다.

 

*셀렉터(selector)란?
- 레플리카 세트는 집합 셀렉터(set-based selector)를 통해 레이블을 선택할 수 있습니다.
- 집합 기반의 셀렉터는 in notin, exists 같은 연산자를 사용합니다.

 

#레플리카 세트 사용해보기

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-replicaset
spec:
  template:
    metadata:
      name: nginx-replicaset
      labels:
        app: nginx-replicaset
    spec:
      containers:
      - name: nginx-replicaset
         image: nginx
         ports:
          - containerPort: 80
   replicas: 3
   selector:
     matchLabels:
       app: nginx-replicaset

1. .spec.template 필드는 레플리카 세트가 어떤 파드를 실행할지에 대한 정보를 넣어 줍니다. 파드 이름(name)은 nginx-replicatset으로 설정하였고 오브젝트 식별은 위한 labels은 app, 그 이름은 nginx-replicaset입니다.

 

2. .spec.template.spec.containers[] 필드에는 컨테이너 사용을 위한 구체적인 정보를 넣어줍니다. 컨테이너의 이름과 base-image, 사용할 포트를 작성해 줍니다.

 

3. .spec.replicas는 ReplicaSet이 유지할 파드의 개수를 설정합니다. 위에서 언급했던 것처럼 파드에 장애가 생겨 종료될 경우 파드의 개수를 설정한 값에 맞게 일정하게 유지할 수 있도록 해줍니다.

 

4. .spec.selector는 replicaset의 관리대상이 될 파드를 선정하는 기준이 됩니다. .spec.selector.matchLabels의 설정 값은 어떤 파드를 선택할지 결정합니다. .spec.template.metadata.labels의 값이 replicaSet이 선택할 파드의 label 값이 됩니다.

 

 

 

오늘은 컨트롤러 중에서도 레플리케이션 컨트롤러와 레플리카 세트에 대한 정리와 간단한 샘플을 만들어서 진행했습니다. 내용을 정리하면 "stateless 한 container 관리", "파드의 상태를 추적 및 관리"인 것 같네요. 그럼 오늘은 여기까지!

 

 

 

탕빠이!

 

반응형
Comments