Skip to main content
Version: v25.09

修改statefulset实现PVC扩容

特性介绍

业务的基础设施通常是statefulset,当产品管理规模扩大时,需要调整业务实例、资源配额以及存储资源,但statefulset的PVC模板大小不支持修改,需要在扩容时手动调整PVC大小,需要手动操作,比较耗时;本特性旨在支持通过修改statefulset的PVC模板大小自动扩容PVC。

应用场景

产品管理规模扩大时,需要调整业务实例、资源配额以及存储资源时,通过修改statefulset模板实现扩容。

能力范围

集群中已存在配置有PVC的statefulset类型资源并开启sc特性开关。

亮点特征

实现通过修改statefulset的PVC模板大小自动扩容PVC。

实现原理

  • 增加FeatureGate:HWStatefulSetVolumeExpansion,涉及kube-apiserver和kube-controller-manager,用于启用修改statefulset进行PVC扩容的能力;

  • 当前已支持修改PVC的来支持存储资源的扩容,因此我们只需要在statefulset controller中增加对PVC大小修改的判断,并增加Patch PVC的步骤,最终由现有的PVC调整能力进行PVC扩容调谐处理;

  • statefulset controller增加侦听PVC的更新事件,来更新statefulset的状态;

  • 在statefulset中增加扩展的字段来表示volumeClaimTemplates修改的状态。

      status: 
    availableReplicas: 3
    currentReplicas: 3
    currentRevision: ex1-54c5bd476c
    readyReplicas: 3
    replicas: 3
    updatedReplicas: 3
    volumeClaimTemplates:
    - finishedReconciliationGeneration: 2
    readyReplicas: 1
    templateName: vol1

与相关特性的关系

无。

安装

无需安装。

使用PVC扩容

前提条件

无。

背景信息

无。

使用限制

无。

操作步骤

使用本特性需要开启localcsi的ALLOWVOLUMEEXPANSION功能,通过修改PVC定义实现自动扩容。

  1. 检查特性是否开启:

    kubectl get sc -A

    1.1 查看localcsi的ALLOWVOLUMEEXPANSION值是否为true(开启)。

    1.2 ALLOWVOLUMEEXPANSION若为false,执行以下命令配置开启:

    kubectl edit sc <sc_name>
  2. 查询所有statefulset:

    kubectl get sts -A
  3. 修改目标statefulset,修改PVC大小配置:

    kubectl edit sts -n <namespace> <sts_name>

找到其中定义PVC的部分,修改storage大小即可,对应部分格式如下:

  volumeClaimTemplates:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
# ...
spec:
# ...
resource:
requests:
storage: 30Gi # 修改改值即可
# ...
# ...