Kubernetes/Udemy - CKAD with Tests

Stateful Sets Introduction

비번변경 2021. 8. 29. 23:24

Stateful Set 필요성

  • 포드가 정해진 순서대로 생성되어야 하는 경우
  • 포드에 고정적인 이름이나 주소가 필요한 경우

 

생성 방법

yaml 형식의 정의 파일을 작성한 뒤, create 명령으로 생성한다.

Deployment와 비슷하게 작성한 후 kind 값만 StatefulSet으로 변경하면 된다.

서비스 이름을 지정해야 하며, Stateful Sets 생성 시 배포 순서대로 포드가 생성된다.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  templete:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql
  replicas: 3
  selector:
    matchLabels:
      app: mysql
  serviceName: mysql-h
  podManagementPolicy: Parallel # 순서 없이 병렬 배포

podManagementPolicy 값을 Parallel로 설정하면 Stateful Set가 순서 없이 포드를 병렬로 배포한다. 기본값은 OrderedReady이다.

 

 

Scale Up/Down

kubectl scale statefulset mysql --replicas=5
kubectl scale statefulset mysql --replicas=3

statefulset Scale Up/Down

스케일 업이 되는 경우, 모든 포드가 준비 상태가 된 후에 다음 포드가 생성된다.

스케일 다운이 되는 경우에는 스케일 업과 반대 순서로, 가장 마지막 포드부터 삭제된다.

 

Delete

Stateful set 삭제도 스케일 다운과 마찬가지로, 가장 마지막 포드부터 삭제된다.

kubectl delete statefulset mysql

 

 

참고문서

https://livebook.manning.com/book/kubernetes-in-action/chapter-10/76