mingming

kubernetes controller - StatefulSet 본문

kubernetes

kubernetes controller - StatefulSet

mingming_96 2023. 9. 4. 22:52

StatefulSet 

https://blog.naver.com/isc0304/221885403537

- Pod의 상태를 유지해주는 컨트롤러 

- Pod를 순차적으로 배포하여 첫 번째 Pod가 준비되고 실행될 때 까지 Pod가 실행되지 않습니다.

- 각 Pod 에 고유한 네트워크 식별자와 볼륨을 할당하여 데이터의 영속성을 보장 

- 각 Pod는 고유한 이름을 가지며, 일반적으로 " 이름 - index " 형식으로 명명됩니다.

 

앞서 학습한 ReplicaSet을 배포해줍니다.

nginx-rs.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

nginx-rs (ReplicaSet)-(random hash) 값의 형식으로 Pod의 이름이 생성됩니다. 그러나 StatefulSet을 사용하면 Pod의 이름을 보존해 줄 수 있습니다. 

 

StatefulSet definition

nginx-sf.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nginx-sf
spec:
  replicas: 3
  serviceName: nginx-sf-service
  podManagementPoliy: Parallel  ## Pod가 동시에 생성 
##  PodManagementPolicy: OrderedReady ## Pod가 순서대로 생성 
  selector:
    matchLabels:
      app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app:webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14

 

 

0번 부터 순서대로 동시에 생성됩니다. 

 

StatefulSet scaleout

kubectl scale statefulset nginx-sf --replicas=2

마지막 번호부터 삭제됩니다. 

 

RollingUpdate

nginx version 을 1.16 으로 수정합니다.

kubectl edit statefulset nginx-sf

 

RollBack

kubectl rollout undo statefulset nginx-sf

 

'kubernetes' 카테고리의 다른 글

kubernetes controller - CronJob  (0) 2023.09.05
kubernetes controller - Job  (0) 2023.09.05
kubernetes controller - Deployment  (1) 2023.09.04
kubernetes controller - ReplicaSet  (0) 2023.09.03
kubernetes controller - Replication Controller  (0) 2023.09.03