레플리카셋(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 라벨이 삭제된 포드를 직접 삭제
'컨테이너 > 쿠버네티스' 카테고리의 다른 글
레플리카셋의 동작 원리 (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 |
댓글