--- title: Kubernetes StatefulSet与有状态应用持久化实践 keywords: - StatefulSet - Headless Service - PVC - StorageClass - PodDisruptionBudget - Anti-Affinity - Readiness - 持久化 - 滚动更新 - 验证 description: 使用 StatefulSet 管理有状态应用,结合 Headless Service 与 PVC/StorageClass 进行数据持久化,提供滚动更新与容灾验证方法。 date: 2025-11-25 categories: - 文章资讯 - 技术教程 --- # 概述 StatefulSet 为有状态工作负载提供稳定标识与有序部署。本文给出 Headless Service 与持久化卷的配置要点,以及更新与容灾策略与验证流程。 # 标识与网络(已验证) - 稳定 Pod 名称与有序滚动(`pod-0/pod-1`); - Headless Service:提供稳定 DNS(`pod-0.service.ns.svc`)。 # 存储与持久化 - PVC 与 StorageClass:为每个 Pod 绑定独立卷; - 选择合适的存储(块/文件)与访问模式(`ReadWriteOnce`)。 # 更新与可用性 - 滚动更新策略:有序停止与启动; - PDB:保证在升级或故障时最小可用副本; - Anti-Affinity:跨节点分布降低同节点风险。 # 就绪与探针 - Readiness 与 Liveness:确保流量只打到可用实例; # 示例(片段) ```yaml 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: db image: postgres:16 volumeMounts: [ { name: data, mountPath: /var/lib/postgresql/data } ] volumeClaimTemplates: - metadata: { name: data } spec: accessModes: [ "ReadWriteOnce" ] resources: { requests: { storage: 100Gi } } ``` # 验证与监控 - 指标:副本可用率、滚动耗时、卷绑定状态; - 演练:节点故障与重调度、卷恢复与数据一致性; # 常见误区 - 使用共享卷导致写冲突; - 无 PDB 导致升级期间全部驱逐; - 缺少就绪探针导致流量打到未初始化实例。 # 结语 以稳定标识与独立存储为基础,结合 PDB 与就绪探针,并以滚动与演练验证,StatefulSet 能可靠地承载有状态应用。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.794170s