在线扩容云盘动态存储卷

随着业务发展,当应用数据增加导致应用挂载的云盘存储空间不足时,您可以扩容云盘来解决问题。云盘动态存储卷支持在线扩容,在不暂停Pod的同时,可以实现云盘扩容,保证业务正常运行。

使用限制

ACK Serverless集群中,扩容云盘存储卷具有以下限制:

  • 不支持扩容InlineVolume类型的云盘存储卷,即不支持扩容通过非PVC方式挂载的云盘存储卷。

  • 对于通过PVC方式挂载的云盘存储卷,仅支持扩容动态存储卷,即PV绑定的PVC关联了StorageClass。

  • 扩容时仅支持在当前云盘类型的容量范围内扩容,不支持修改云盘类型。

  • 如果云盘类型为普通云盘,则不支持扩容。

准备工作

  1. 确认集群中已安装CSI存储组件,且组件已升级到最新版本。更多信息,请参见安装与升级csi-provisioner组件

  2. 检查云盘挂载的Pod的状态,确保Pod处于Running状态。

  3. 查看使用的StorageClass的YAML,确保allowVolumeExpansion配置为true。

    说明

    StorageClass中的allowVolumeExpansion默认配置为true,如果您在创建StorageClass时没有配置allowVolumeExpansion,系统会自动传入allowVolumeExpansion: true

  4. (可选)创建云盘快照。具体操作,请参见创建快照

    重要

    为避免云盘扩容过程中出现异常,导致数据丢失,建议您创建云盘快照来备份数据。在完成扩容后,您需要手动删除该快照,避免持续产生快照费用。

开启云盘在线扩容功能

默认情况下,ACK Serverless集群不支持云盘扩容,您需要修改eci-profile,将enablePVCController配置为true,开启云盘在线扩容功能。

通过kubectl命令行

  1. 连接集群。具体操作,请参见通过kubectl连接Kubernetes集群

  2. 执行以下命令编辑eci-profile。

    kubectl edit configmap eci-profile -n kube-system
  3. enablePVCController的值改为true并保存。

通过控制台

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择配置管理 > 配置项

  3. 选择命名空间为kube-system

  4. 找到eci-profile,单击编辑

  5. enablePVCController的值改为true,然后单击确定

在线扩容云盘

在已有一个应用挂载动态云盘存储卷的情况下,您可以通过以下方式,在不暂停Pod的同时,扩容云盘。

  1. 连接集群。具体操作,请参见通过kubectl连接Kubernetes集群

  2. 确认应用内云盘挂载情况。

    假设Pod名称为test-0,挂载路径为/data,命令示例如下:

    kubectl exec test-0 -- df /data

    返回示例如下:

    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/vdb        25626852    24  25610444   1% /data
  3. 查看PVC。

    kubectl get pvc

    返回示例如下,PVC名称为test-pvc,该PVC绑定的云盘ID为d-uf68pljc3sppvhss****,容量为25 GiB。

    NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    test-pvc   Bound    d-uf68pljc3sppvhss****   25Gi       RWO            test-sc        <unset>                 7m38s
  4. 修改PVC信息,扩容云盘容量。

    假设PVC名称为test-pvc,云盘容量要扩容到30 GiB,命令示例如下:

    kubectl patch pvc test-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
  5. 等待一段时间后,确认云盘是否扩容成功。

    1. 查看PVC。

      kubectl get pvc

      返回示例如下,可以看到云盘d-uf68pljc3sppvhss****已扩容到30 GiB。

      NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
      test-pvc   Bound    d-uf68pljc3sppvhss****   30Gi       RWO            test-sc        <unset>                 18m
    2. 查看云盘挂载情况。

      kubectl exec test-0 -- df /data

      返回示例如下,可以看到已扩容成功。

      Filesystem     1K-blocks  Used Available Use% Mounted on
      /dev/vdb        30787492    24  30771084   1% /data