扩容云盘存储卷(1.16以下版本集群)

更新时间:2025-02-19 08:22:54

如果您的集群版本低于1.16,或者使用的云盘类型为普通云盘,无法通过更新PVC的方式来在线扩容云盘存储卷,您可以直接扩容云盘本身,即手动扩容云盘及其文件系统的容量。

适用范围

本文通过手动扩容存储介质本身容量的方式(不修改PVC)实现云盘存储卷的扩容。如果您的集群版本低于1.16,或者不满足在线扩容云盘存储卷的要求时,可采用该方式。

重要

该方式需要您在ECS侧完成云盘扩容,集群内资源不受影响(即在集群侧查看PVCPV的容量,仍是扩容前的大小)。为尽量保证集群内PVPVC的容量显示与实际一致,推荐您使用在线扩容云盘存储卷

该方式支持在线扩容和离线扩容,请您根据业务需求进行选择。

  • 在线扩容:不暂停应用,但文件系统在线扩容时,如果IO流量高,存在IO报错的风险。

  • 离线扩容:暂停应用后磁盘IO会暂停,因此文件系统离线扩容时数据更安全,但应用会暂停一段时间。

重要

云盘类型为普通云盘时,不支持在线扩容,请采用离线扩容。

下文以使用云盘静态存储卷中创建的应用为例,进行云盘存储卷扩容。

在线扩容

不暂停应用,直接在ECS侧完成云盘的在线扩容。

步骤一:查看云盘信息

  1. 连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群CloudShell上通过kubectl管理Kubernetes集群

  2. 查看云盘挂载的Pod的信息,确认Pod处于Running状态。

    kubectl get pod 

    返回示例如下:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          38s
  3. 查看PVC,获取云盘ID。

    kubectl get pvc

    返回示例如下,可以看到PVC绑定的PVd-uf628m33r5rsbi******(即云盘ID),容量为20 GiB。

    NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc   Bound    d-uf628m33r5rsbi******   20Gi       RWO            disk           <unset>                 64s

步骤二:扩容云盘及其文件系统

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择存储与快照 > 块存储

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 根据云盘ID找到应用挂载的云盘,选中云盘然后单击底部的扩容

  5. 在弹出的向导页,参考界面提示,完成扩容操作。

    • 确定目标盘与须知页面,确认云盘信息并阅读相关提示,然后单击已知晓并备份,继续扩容

    • 配置扩容方式与容量页面,设置扩容参数,然后单击扩容

      参数

      描述

      示例

      参数

      描述

      示例

      扩容后的容量

      设置扩容后的容量,扩容后容量不允许小于当前容量。

      30 GiB

      扩容方式

      选择在线扩容,扩容后无需重启,修改后的容量直接生效。

      在线扩容

    • 确认扩容结果页面,确认云盘容量已经扩容成功,然后单击下一步,扩容分区和文件系统

      说明

      扩容云盘容量后,还需要扩容文件系统,否则容器内存储空间依然是扩容前的大小。

    • 扩容分区和文件系统页面,选择通过云助手操作,然后勾选授权本次云助手操作,单击授权云助手

      操作后,请确认云盘容量和文件系统均已扩容成功。

      云盘扩容

离线扩容

通过将Replica配置为0的方式暂停应用,完成云盘扩容后再重新启动应用。

步骤一:查看云盘信息并暂停应用

  1. 连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群CloudShell上通过kubectl管理Kubernetes集群

  2. 查看云盘挂载的Pod的信息,确认Pod处于Running状态。

    kubectl get pod 

    返回示例如下:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          38s
  3. 查看PVC,获取云盘ID。

    kubectl get pvc

    返回示例如下,可以看到PVC绑定的PVd-uf628m33r5rsbi******(即云盘ID),容量为20 GiB。

    NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc   Bound    d-uf628m33r5rsbi******   20Gi       RWO            disk           <unset>                 64s
  4. 将应用缩容为0个副本,暂停应用。

    kubectl scale sts disk-test --replicas=0

    预期输出:

    statefulset.apps/disk-test scaled

步骤二:扩容云盘

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择存储与快照 > 块存储

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 根据云盘ID找到应用挂载的云盘,选中云盘然后单击底部的扩容

  5. 在弹出的向导页,参考界面提示,完成扩容操作。

    • 确定目标盘与须知页面,确认云盘信息并阅读相关提示,然后单击已知晓并备份,继续扩容

    • 配置扩容方式与容量页面,设置扩容参数,然后单击扩容

      参数

      描述

      示例

      参数

      描述

      示例

      扩容后的容量

      设置扩容后的容量,扩容后容量不允许小于当前容量。

      30 GiB

      扩容方式

      由于暂停应用后,云盘处于待挂载状态,此处只能选择离线扩容

      离线扩容

    • 确认扩容结果页面,确认云盘容量已经扩容成功,然后单击下一步,扩容分区和文件系统

    • 扩容分区和文件系统页面,选择通过文档自助操作,在扩容分区和文件系统(Linux)处查看文档。

      说明
      • 扩容云盘容量后,还需要扩容文件系统,否则容器内存储空间依然是扩容前的大小。

      • 由于云盘处于待挂载状态,无法通过云助手操作,请手动扩容文件系统。

步骤三:扩容文件系统

以下操作针对未分区云盘。

重要

不建议在Kubernetes中使用分区云盘。

  1. 将云盘挂载到ECS实例。

    1. ECS管理控制台块存储页面,找到目标云盘,在操作列中单击挂载

    2. 挂载到实例的向导页,选择要挂载的ECS实例,然后单击下一步

      重要

      请勿选中云盘相关释放行为。

    3. 分区及创建文件系统并挂载的向导页,在初始化方式区域单击稍后设置

    4. 确认云盘的状态已变更为使用中

  2. 连接到ECS实例。具体操作,请参见ECS远程连接方式概述

  3. 获取云盘设备符。

    命令示例如下,其中<serial>为云盘的序列号,请根据实际替换。

    您可以通过云盘ID快速确认云盘序列号(云盘ID=d-{云盘序列号})。更多信息,请参见查看块存储序列号

    重要

    如果云盘创建时间早于20200610日,则不支持序列号特性,您无法通过以下命令获取云盘设备符。您可在云盘挂载前和挂载后分别执行ls /dev/vd*命令查看云盘列表,比较两者的差异确认目标云盘的设备符。

    realpath /dev/disk/by-id/virtio-<serial>

    返回示例如下,表示云盘设备符为/dev/vdb

    /dev/vdb
  4. 扩容文件系统。

    命令示例如下,其中请替换为实际的云盘设备符。

    resize2fs /dev/vdb

    如果返回以下错误提示,请先按照提示执行e2fsck -f /dev/vdb再执行resize2fs /dev/vdb扩容文件系统。

    resize2fs 1.46.0 (29-Jan-2020)
    Please run 'e2fsck -f /dev/vdb' first.

    扩容文件系统后,预期返回如下:

    resize2fs 1.46.0 (29-Jan-2020)
    Resizing the filesystem on /dev/vdb to 7864320 (4k) blocks.
    The filesystem on /dev/vdb is now 7864320 (4k) blocks long.
  5. 确认文件系统扩容成功。

    1. 创建临时文件夹/mnt/disk/,并将云盘挂载到临时文件夹上.

      mkdir /mnt/disk
      mount /dev/vdb /mnt/disk/
    2. 查看文件系统大小。

      df /mnt/disk/

      预期返回如下,可以看到/dev/vdb 的容量已扩容到30 GiB。

      Filesystem     1K-blocks  Used Available Use% Mounted on
      /dev/vdb        30787536    24  30771128   1% /mnt/disk
    3. 将云盘从临时文件夹卸载。

      umount /mnt/disk
  6. ECS实例上卸载云盘。具体操作,请参见卸载数据盘

步骤四:重启应用

  1. 将应用扩容为1个副本,重启应用。

    kubectl scale sts disk-test --replicas=1

    预期输出:

    statefulset.apps/disk-test scaled
  2. 确认Pod是否恢复。

    kubectl get pod

    预期输出:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          5s
  3. 查看文件系统大小。

    kubectl exec -it disk-test-0 -- df /data

    预期输出如下,可以看到挂载路径对应的文件系统已扩容成功。

    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/vdb        30787536    24  30771128   1% /data
  • 本页导读 (1)
  • 适用范围
  • 在线扩容
  • 步骤一:查看云盘信息
  • 步骤二:扩容云盘及其文件系统
  • 离线扩容
  • 步骤一:查看云盘信息并暂停应用
  • 步骤二:扩容云盘
  • 步骤三:扩容文件系统
  • 步骤四:重启应用
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等