Server/Kubernetes

쿠버네티스(Kubernetes) ReplicaSet이란?

범데이 2022. 12. 13. 00:52

 

1. 레플리카셋(ReplicaSet) 이란?

레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다.

 

예를 들어, 5개의 파드를 항상 실행하도록 설정하면 이후 1개가 삭제되면 다시 파드 1개가 실행되어 5개를 유지할 수 있도록 해준다. 마찬가지로 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성하여 5개를 유지하도록 한다.

 

 

 

2. 레플리카셋을 사용하는 이유

쿠버네티스의 기본 단위인 Pod는 여러 개의 컨테이너를 추상화해 하나의 애플리케이션으로 동작하도록 만드는 훌륭한 컨테이너 묶음이다. 그러나 YAML에 포드만 정의해 생성하게 되면 이 Pod의 생애 주기(Lifecycle)은 컨테이너 삭제 시 영원히 사라지게 된다.

 

이처럼 yaml파일에 포드만 정의해 생성할 경우 해당 포드는 오직 쿠버네티스 사용자에 의해 관리한다. 실제로 외부 사용자의 요청을 처리해야 하는 마이크로 서비스 구조의 포드라면 이러한 방식을 사용하기 어렵다.

 

여러 개의 포드를 직접 생성하는 방법은 려거 가지 이유로 적절하지 않다. 우선 동일한 포드의 개수가 많아질 수록 일일이 정의하는 것은 매우 비효율적인 작업이며, 포드가 어떤 이유로든지 삭제되거나, 포드가 위치한 노드에 장애가 발생해 더 이상 포드에 접근하지 못하게 됐을 때, 직접 포드를 삭제하고 다시 생성하지 않는 한 해당 포드는 다시 복구되지 않는다.

 

이러한 경우 레플리카셋이라는 쿠버네티스 오브젝트를 함께 사용하는 것이 일반적이다.

 

 

3. 레플리카셋을 사용하는 시기

레플리카셋은 앞서 살펴본 것처럼 지정된 수의 파드 레플리카가 항상 실행되도록 보장한다. 그러나 디플로이먼트는 레플리카셋을 관리하고 다른 유용한 기능과 함께 파드에 대한 선언적 업데이트를 제공하는 상위 개념이다. 따라서 우리는 사용자 지정 오케스트레이션이 필요하거나 업데이트가 전혀 필요하지 않은 경우라면 레플리카셋을 직접적으로 사용하기 보다는 디플로이먼트를 사용하는 것을 권장한다.

 

이는 레플리카셋 오브젝트를 직접 조작할 필요가 없다는 것을 의미한다. 대신 디플로이먼트를 이용하고 사양 부분에서 애플리케이션을 정의하면 된다.

 

 

 

 


#References

https://nearhome.tistory.com/109

https://nirsa.tistory.com/136

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

반응형