본문 바로가기
App Programming/Kubernetes

[K8s] 스테이트풀셋

by goatlab 2024. 6. 9.
728x90
반응형
SMALL

스테이트풀셋

 

https://loft.sh/blog/kubernetes-statefulset-examples-and-best-practices/

 

스테이트풀셋은 어플리케이션의 스테이트풀을 관리하는데 사용하는 워크로드 API 오브젝트이다. 파드 집합의 디플로이먼트와 스케일링을 관리하며, 파드들의 순서 및 고유성을 보장한다 . 디플로이먼트와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리한다. 디플로이먼트와는 다르게, 스테이트풀셋은 각 파드의 독자성을 유지한다. 파드가 동일한 스펙으로 생성되었어도, 서로 교체는 불가능하다. 다시 말해, 각각은 재스케줄링 간에도 지속적으로 유지되는 식별자를 가진다.

 

헤드리스 서비스 생성

 

vim statefulset-service.yml
apiVersion: v1
kind: Service
metadata:
  name: sfs-service01
spec:
  selector:
    app: web-sfs01
  type: ClusterIP
  clusterIP: None		# 헤드리스 서비스 (headless service) : 클러스터 IP가 없는 서비스
  ports:
  - protocol: TCP
  	port: 80

 

헤드리스 서비스 실행

 

kubectl apply -f statefulset-service.yml
kubectl get svc

 

스테이트풀셋 생성

 

vim statefulset-web01.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: sfs-test01
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-sfs01
  serviceName: sfs-service01
  template:
    metadata:
      labels:
        app: web-sfs01
    spec:
      containers:
      - name: nginx
        image: nginx:latest

cp statefulset-web01.yml statefulset-web02.yml
vim statefulset-web02.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: sfs-test01
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web-sfs01
  serviceName: sfs-service01
  template:
    metadata:
      labels:
        app: web-sfs01
    spec:
      containers:
      - name: nginx
        image: nginx:latest

 

스테이트풀셋 실행

 

kubectl apply -f statefulset-web01.yml
kubectl get all

kubectl apply -f statefulset-web02.yml
kubectl get all

 

파드가 2개로 줄어든 것을 확인할 수 있다.

 

kubectl delete -f statefulset-web02.yml
kubectl delete -f statefulset-service.yml
728x90
반응형
LIST

'App Programming > Kubernetes' 카테고리의 다른 글

[K8s] metalLB  (0) 2024.06.09
[K8s] 헬름 (Helm)  (0) 2024.06.09
[K8s] 스토리지 볼륨 (Storage Volume)  (0) 2024.06.09
[K8s] 롤아웃  (0) 2024.06.08
[K8s] 매니페스트로 디플로이먼트 실행  (0) 2024.06.08