首页/云/云与容器速查/StatefulSet 有状态工作负载
Kubernetes68 条

StatefulSet 有状态工作负载

为有状态应用提供稳定网络标识与稳定存储:Pod 按序号 0..N-1 命名与建删(OrderedReady),每个 Pod 绑定自己的 PVC;必须配 Headless Service 才有稳定 DNS。

云与容器速查云更新于 2026-10-12
稳定标识pod 名固定为 <sts>-0/<sts>-1,重建后名字不变
稳定存储volumeClaimTemplates 为每个 Pod 生成独立 PVC
顺序控制默认 OrderedReady 串行建删;podManagementPolicy: Parallel 可并行
DNS需配 serviceName 指向 Headless Service
扩缩容缩容按序号从大到小删除;数据卷默认保留

StatefulSet 示例

StatefulSet 示例
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: db
spec:
  serviceName: db-headless
  replicas: 3
  selector:
    matchLabels: { app: db }
  template:
    metadata:
      labels: { app: db }
    spec:
      containers:
        - name: mysql
          image: mysql:8.0
          volumeMounts:
            - name: data
              mountPath: /var/lib/mysql
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 50Gi
删 StatefulSet 不会自动删 PVC:数据默认保留,这是特性也是『空间为什么没释放』的答案。

易错点

  • 忘了 serviceName/Headless Service:Pod DNS 解析不出来,集群搭建失败
  • 按序号读数据:0 号与 1 号各自一份数据,误把多副本当同一份库

数据来源与参考

  • Kubernetes Docs:StatefulSets

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌