有状态 无状态
有状态服务(Stateful Service)
需要存储持久化数据
无状态服务(Stateless Service)
不需要存储持久化数据,并且多个实例对于同一个请求响应的结果是完全一致的
特点
Pod 副本的创建默认会按照序列号升序处理,副本的更新和删除会按照序列号降序处理
Pod 的名称的形式为
配合 headless service , 每个 pod 会有一条 dns 条目(pod名.svc名.namespace名 )
pod 重建后 ip改变但是 podname 及对应的 dns 解析不变
pod重建后正常访问之前的存储数据,基于 pvc
示例
apiVersion: apps/v1kind: StatefulSetmetadata:name: nginx-stsspec:serviceName: nginx-sts-svcreplicas: 3selector:matchLabels:app: nginx-ststemplate:metadata:labels:app: nginx-stsspec:containers:- image: nginxname: nginx-sts-pod

apiVersion: v1kind: Servicemetadata:name: nginx-sts-svcspec:ports:- port: 80protocol: TCPtargetPort: 80clusterIP: Noneselector:app: nginx-sts
副本 pod 对 svc 的解析
其它 pod 对 svc 的解析
删除一个 pod 后 解析变化 nginx-sts-1 由 172.11.140.92 重建 172.11.140.82
pod 重建 ip 会变化,但是 对应的主机名不变

注意点
必须指定 serviceName
sts.spec
podManagementPolicy
updateStrategy
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 2 # 更新大于等于这个索引的 pod
volumeClaimTemplates
volumeClaimTemplates:
- apiVersion:
kind:
metadata:
spec:
