StatefuleSet이 뭔가요?

작성자 김아름 수정일 2022-12-02 13:21

#kubernetes, #쿠버네티스, #statefulset, #pod, #스테이트

들어가며

  • k8s의 기본 오브젝트 종류 중 contreoller가 있습니다.

  • controller의 주 역할은 pod를 생성하고 관리합니다.

  • 이 controller의 종류 중 하나인 StatefulSet에 대해 알아보겠습니다.



StatefuleSet이란?

StatefulSet은 pod의 상태(이름, 볼륨 등)을 유지해주는 controller 입니다.

기존의 pod를 삭제하고 생성할 때에는 상태가 유지되지 않는 한계가 있습니다.

하지만 필요에 따라 pod의 상태를 유지하고 싶을 때 statefulset을 사용할 수 있습니다.


statefulset에 의해 생성되는 pod들의 이름은 규칙성을 띕니다.

생성된 pod들은 [pod name]-[number] 로 정해지는데, 이때 number는 0부터 1씩 증가합니다.


스파클링소다 4.0 기준으로 statefulset은 아래와 같습니다.

kubectl get statefulset -A
NAMESPACE    NAME                                              READY   AGE
monitoring   alertmanager-kube-prometheus-stack-alertmanager   1/1     43d
monitoring   prometheus-kube-prometheus-stack-prometheus       1/1     43d
sodaflow     devainexus                                        1/1     42d
sodaflow     frameworkcontroller                               1/1     43d
sodaflow     gitlab-postgresql                                 1/1     43d
sodaflow     mariadb-cluster-primary                           1/1     43d
sodaflow     mariadb-cluster-secondary                         1/1     43d
sodaflow     polyaxon-postgresql                               1/1     43d


statefulset으로 관리되는 pod들의 이름을 확인해보면, 모두 pod이름-0, pod이름-1 과 같이 정해져 있습니다.

kubectl get po
NAME                                                      READY   STATUS      RESTARTS   AGE
devainexus-0                                              1/1     Running     3          21d
frameworkcontroller-0                                     1/1     Running     5          43d
gitlab-postgresql-0                                       1/1     Running     1          21d


statefulset의 pod 생성 방법은, 동시에 모든 pod를 생성하지 않고, 0, 1, 2, .. 순서로 생성하게 됩니다.

이러한 특징은 데이터베이스에서 master 노드가 기동된 후, slave 노드가 기동되어야 하는 조건 등에 사용할 수 있습니다.

(반면 삭제할 때에는 큰 숫자부터 역순으로 삭제하게 됩니다.)


또한, statefulset의 특징 중 하나는 pod마다 개별 pv와 pvc가 존재한다는 것입니다.

예를 들어 replicas 값이 3인 statefulset은 pod를 3개를 띄우게 됩니다.

이때 volume으로 pv를 설정한다면, 해당 모든 3개의 pod는 개별 pv, pvc를 가지게 됩니다.


statefulset 역시 update 기능과 rollback 기능을 사용할 수 있습니다.




마무리

  • pod 생성 및 관리하는 k8s의 controller 중 daemonset에 대해 알아보았습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300