---

title: Kubernetes StatefulSet滚动更新与存储扩容实践

keywords:

  • StatefulSet
  • PVC扩容
  • volumeClaimTemplates
  • RollingUpdate
  • allowVolumeExpansion

description: 通过StatefulSet滚动更新与PVC扩容实现有序升级与存储扩容,提供可验证的YAML与命令确保稳定与数据安全。

date: 2025-11-26

categories:

  • 文章资讯
  • 技术教程

---

概述

  • 目标:在有状态应用中安全地进行滚动更新与在线存储扩容,避免数据损坏与服务中断。
  • 适用:数据库、消息队列、缓存集群等。

核心与实战

  • 存储类允许扩容(StorageClass):
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: kubernetes.io/aws-ebs
allowVolumeExpansion: true
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
  • StatefulSet定义:
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: db
  namespace: prod
spec:
  serviceName: db-headless
  replicas: 3
  updateStrategy:
    type: RollingUpdate
  selector:
    matchLabels: { app: db }
  template:
    metadata:
      labels: { app: db }
    spec:
      containers:
        - name: db
          image: repo/db:1.2.3
          volumeMounts:
            - name: data
              mountPath: /var/lib/db
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes: [ "ReadWriteOnce" ]
        storageClassName: fast-ssd
        resources:
          requests:
            storage: 50Gi
  • PVC扩容步骤:
kubectl -n prod get pvc | select-string -pattern db-data
kubectl -n prod patch pvc db-data-db-0 -p '{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}'
kubectl -n prod patch pvc db-data-db-1 -p '{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}'
kubectl -n prod patch pvc db-data-db-2 -p '{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}'

示例

  • 有序滚动更新:
kubectl -n prod rollout restart statefulset/db
kubectl -n prod rollout status statefulset/db
  • 检查卷大小与节点:
kubectl -n prod describe pvc db-data-db-0 | findstr -i capacity

验证与监控

  • 应用健康:
  • 使用readinessProbe/livenessProbe确保滚动期间就绪与健康;观察副本逐个更新。
  • 存储后端:
  • 验证后端卷支持在线扩容;观察扩容完成事件与文件系统调整。
  • 数据一致性:
  • 在应对扩容前进行快照/备份;扩容后校验数据完整性。

常见误区

  • StorageClass未开启allowVolumeExpansion导致扩容失败;需提前配置。
  • 一次性扩容所有副本导致负载抖动;应逐个PVC扩容并观察。
  • 忽视备份与快照;在生产扩容前需制定恢复方案。

结语

  • 通过有序滚动与存储扩容,StatefulSet可在生产中保持稳定升级与容量提升,并以验证与监控保障数据安全。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部