beta feature in 1.7 이전에는 PetSets이였고 이제부터 StatefulSets로 변경되었다.
stateless한 요구사항은 Deployment나 ReplicaSet을 이용한다.
--runtime-config
옵션으로 기능 비활성화 가능함storage class
를 이용해서 프로비저닝을 하거나 아니면 미리 만들어 둔 디스크를 사용함network domain 관리용
N개의 Replica Unique Pod를 생성하는 일을 함
PersistentVolumes을 프로비저닝 하는 역할
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: gcr.io/google_containers/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: my-storage-class
resources:
requests:
storage: 1Gi
N replica 가 존재함 정수형 순서값을 할당 받음 [0, N)
$(statefulset name)-$(ordinal)
$(service name).$(namespace).svc.cluster.local
$(podname).$(govering service domain)
VolumeClaimTemplate
에 명시된 PersistentVolume을 생성함volumeMounts
함.spec.podManagementPolicy
StatefulSets의 기본정책
병렬로 배포되고 종료되게 함 다른 Pod의 작업을 기다리지 않음
.spec.updateStrategy
.spec.updateStrategy
값이 없으면 선택되는 기본값 .spec.updateStrategy.type
필드에 OnDelete
값 설정.spec.updateStrategy.type
을 RollingUpdate
설정함.spec.updateStrategy.rollingUpdate.partition