스테이트풀셋은 애플리케이션의 스테이트를 관리하는데 사용하는  오브젝트이다. 파드들의 순서 및 고유성을 보장한다 .

디플로이먼트와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다

디플로이먼트와는 다르게, 스테이트풀셋은 각 파드의 연결 등 각종 연결된 정보상태를 유지한다. 

 

디플로이먼트를 생성하면 아래 그림과 같이 생성이 된다.

pod의 이름에는 랜덤한 난수값이 붙고 PVC에 붙게 된다.

이 상황에서 pod한개를 delete하면 새로 다른 이름의 pod를 create하고 pvc에 연결한다.

 

하지만 statefulset은 아래와 같은 이미지와 같이 리소스가 생성된다.

각 pod마다 고유한 PVC가 생성이 되고, pod와 pvc의 이름도 난수값이 아닌 고유한 식별자가 붙게 된다.  또한 pod를 delete하면 다른 이름의 pod로 create 되는 것이 아니라 같은 이름의 pod가 다시 create되며 같은 pvc도 붙게 된다.

 

스테이트 풀셋은 기본적으로 데이터를 분실하지 않도록 설계되어있다. 하지만 장애로인해 특정 노드가 정지되어 사용불가가 되었을때 스테이트풀셋은 새로운 pod를 기동하지 않는다. 상태를 보존하기 위해서다. 

정지가 아니라 k8s에서 node를 삭제하면 다른 노드에서 기동된다.

 

사실 현업에서 이러한 방법을 운영환경에서 잘 사용하는지 모르겠다.

'쿠버네티스' 카테고리의 다른 글

HPA  (0) 2022.09.26
인그레스  (0) 2022.09.13
스토리지  (0) 2022.08.28
잡, 크론잡  (0) 2022.08.28
서비스  (0) 2022.08.28

+ Recent posts