- 애플리케이션의 상태를 저장하고 관리하는 데 사용되는 쿠버네티스 객체
- 기존의 포드를 삭제하고 생성할 때 상태를 유지해 줍니다.
- 안정된, 고유한 네트워크 식별자
- 안정된, 지속성을 갖는 스토리지
- 순차적인, 정상배포와 스케일링
- 순차적인, 자동 롤링 업데이트
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
replicas: 3 # 기본값은 1
minReadySeconds: 10 # 기본값은 0
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: azurefile
resources:
requests:
storage: 1Gi
sansae@sansaeAir15m2 k8s-lab-workspace % k apply -f statefulset.yaml service/nginx created statefulset.apps/web created sansae@sansaeAir15m2 k8s-lab-workspace % k get all NAME READY STATUS RESTARTS AGE pod/web-0 0/1 Pending 0 3s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 29s service/nginx ClusterIP None <none> 80/TCP 3s NAME READY AGE statefulset.apps/web 0/3 3s sansae@sansaeAir15m2 k8s-lab-workspace % k get all NAME READY STATUS RESTARTS AGE pod/web-0 1/1 Running 0 2m47s pod/web-1 1/1 Running 0 117s pod/web-2 1/1 Running 0 97s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 3m13s service/nginx ClusterIP None <none> 80/TCP 2m47s NAME READY AGE statefulset.apps/web 3/3 2m47s