概述目标:在有状态应用中安全地进行滚动更新与在线存储扩容,避免数据损坏与服务中断。适用:数据库、消息队列、缓存集群等。核心与实战存储类允许扩容(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 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部