StatefulSet 入门
为有状态应用提供稳定身份与存储。
StatefulSet 适合数据库、队列等有状态应用,核心是“稳定身份 + 稳定存储”。
典型特性
- Pod 名称固定(如
mysql-0) - 与 PVC 一一绑定
- 可控制有序启动与滚动更新
核心片段
spec:
serviceName: mysql
replicas: 3
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
小建议
- 配合 Headless Service
- 先单实例验证,再扩容
实操要点
- 先做快速盘点:
kubectl get nodes、kubectl get pods -A、kubectl get events -A。 - 对比“期望状态”和“实际状态”,
kubectl describe往往能解释漂移或失败原因。 - 名称、Label、Selector 要一致,避免 Service 或控制器找不到 Pod。
快速检查清单
- 资源定义与业务意图一致。
- Namespace、权限、镜像与环境匹配。
- 上线前具备健康探针与可观测日志。