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

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.122381s