본문으로 바로가기

쿠버네티스 - Statefulset

category Kubernetes 2021. 7. 18. 18:58
반응형

Statefulset 이란?

  • Pod의 상태를 유지해주는 컨트롤러
  • Pod의 이름
  • Pod의 볼륨 (스토리지)

Statefulset의 예를 들기 위해 ReplicationController를 생성했다. (replica : 3)

apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-nginx
spec:
  replicas: 3
  selector:
    app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
~

<replicationController.yaml 파일의 내용>

위의 그림에서 파랑색 네모칸으로 체크한 것은 파일 내에서 선언한 rc-nginx의 공통값으로 들어가는 것이다. 뒤의 빨강색 네모박스는 내가 선언한 것이 아닌. 쿠버네티스가 만들어내는 해시 값이다. (Pod의 이름이 보장되지 않는다.)

 

 

Statefulset 파일 생성 및 Statefulset으로 파드 생성 실습.

 

Statefulset과 ReplicaSet 파일의 차이점.

spec에서 serviceName이 추가된다.

 

apiVersion: v1
kind: StatefulSet
metadata:
  name: sf-nginx
spec:
  replicas: 3
  serviceName: sf-nginx-service
  selector:
    matchLabels:   
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

<statefulset.yaml 파일 내용>

statefulset으로 컨트롤러 생성확인.

Statefulset으로 생성한 파드들이 내가 지정한 sf-nginx 다음으로 순서대로 숫자를 매긴채로 생성된 것을 확인할 수 있다. 

스케일 아웃/인 해보기

 

스케일 아웃

kubectl scale statefulset [metadata-name] --replicas=4 

3이 추가된것을 확인 할 수 있다.

 

스케일 인으로 replicas의 갯수를 2로 줄여보자

스케일 인

kubectl scale statefulset [metadata-name] --replicas=2 

3,2 번이 종료된것을 확인 할 수 있다. 이렇게 Pod의 이름을 유지 해주는 것을 Statefulset Controller라고 한다.

반응형

'Kubernetes' 카테고리의 다른 글

쿠버네티스 - Ingress  (0) 2021.07.20
쿠버네티스 - Service  (0) 2021.07.19
쿠버네티스 - Daemonset  (0) 2021.07.18
쿠버네티스 - Deployment  (0) 2021.07.17
쿠버네티스 - Replicaset  (0) 2021.07.17