본문 바로가기
컨테이너/쿠버네티스

04 레플리카셋(Replica Set)

by ^..^v 2020. 9. 21.
728x90
반응형

레플리카셋(Replica Set)

https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicaset/

지정된 수의 파드 레플리카가 항상 실행되도록 보장

노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성

 

2개의 컨테이너가 담겨 있는 nginx 포드를 삭제하는 방법

YAML 파일 또는 파드 이름을 이용해서 삭제

                                         

kubectl delete 명령으로 포드를 삭제하면 그 포드의 컨테이너 또한 삭제되어 쿠버네티스에서 영원히 사라지게 됨

⇒ 포드만 정의해 생성할 경우 해당 포드는 오직 쿠버네티스 사용자에 의해 관리

⇒ 실제 서비스 환경에서는 적용하기 어려움



실제 서비스 환경에서는 여러 개의 동일한 컨테이너를 생성한 뒤 외부 요청이 각 컨테이너에 적절히 분배될 수 있어야 함

⇒ 쿠버네티스에서는 동일한 여러 개의 포드를 생성해 외부 요청을 각 포드에 분배하는 방식을 사용해야 함

 

여러 개의 포드를 직접 만드는 방식의 예

  • 동일한 포드를 일일이 정의하는 것은 매우 비효율적인 작업임

  • 포드가 삭제되거나, 포드가 위치한 노드에 장애가 발생해 포드에 접근하지 못하는 경우, 관리자가 직접 포드를 삭제하고 다시 생성해야 함

 

레플리카셋 정의

레플리카셋을 정의하는 필드는 획득 가능한 파드를 식별하는 방법이 명시된 셀렉터(selector), 유지해야 하는 파드 개수를 명시하는 레플리카의 개수(replicas), 그리고 레플리카 수 유지를 위해 생성하는 신규 파드에 대한 데이터를 명시하는 파드 템플릿(template)을 포함한다.

레플리카셋은 필드에 지정된 설정을 충족하기 위해 필요한 만큼 파드를 만들고 삭제한다. 레플리카셋이 새로운 파드를 생성해야 할 경우, 명시된 파드 템플릿을 사용한다.

 

레플리카셋 생성 및 확인

 

포드 개수를 늘려서 실행

 

레플리카셋 삭제

⇒ 레플리카셋에 의해 생성된 포드는 함께 삭제

 

레플리카셋의 동작 원리

일정 개수의 포드를 유지하는 것

유지할 포드를 라벨 셀렉터를 이용해서 정의

 

#1 app: my-nginx-pods-label 라벨을 가지는 포드를 레플리카셋을 생성하기 이전에 먼저 생성



#2 app: my-nginx-pods-label 라벨을 가지는 포드를 3개 생성하는 레플리카셋을 생성



#3 수동으로 생성한 포드를 삭제

 

#4 레플리카셋이 생성한 포드의 라벨을 변경



#5 레플리카셋 삭제 → 라벨이 일치하지 않는 포드는 삭제되지 않음 (레플리카의 관리 대상이 아님)

 

#6 라벨이 삭제된 포드를 직접 삭제

728x90
반응형

'컨테이너 > 쿠버네티스' 카테고리의 다른 글

레플리카셋의 동작 원리  (0) 2022.01.28
사이드카 패턴 예  (0) 2022.01.28
Kubespray를 활용한 멀티 노드 쿠버네티스 클러스터 구성  (0) 2022.01.27
o3 포드(pod)  (0) 2020.09.18
o2 Kubernetes  (0) 2020.09.18

댓글