当云盘存储卷的使用空间不足时,您可以扩容云盘容量以增加存储空间。ACK支持在1.16及以上版本的集群中实现CSI云盘存储卷的在线扩容。本文介绍如何在线扩容云盘存储卷。
适用范围
本文通过更新PVC的存储容量声明实现扩容云盘存储卷。该方式适用范围如下:
- 云盘对应的PV所绑定的PVC关联了StorageClass,并且StorageClass中已配置 - allowVolumeExpansion: true。说明- ACK默认提供的StorageClass已配置 - allowVolumeExpansion: true,您自行创建的StorageClass需要自行配置。StorageClass不支持修改属性,只能新建。
- 云盘挂载的应用Pod需处于Running状态。 
- 如果云盘类型为普通云盘,则不支持使用该方式扩容。 
- 如果集群版本低于1.16,则不支持使用该方式扩容。如需升级集群,请参见升级集群。 
- 该方式依赖云盘的Resize能力。更多信息,请参见ResizeDisk。 
准备工作
- 为云盘创建快照。 重要- 为避免扩容过程中的误操作导致数据丢失,建议提前为云盘创建快照,做好数据备份。完成扩容后,您可以删除快照,避免快照持续计费。具体操作,请参见使用云盘快照。 
- 如果您的集群是ACK专有集群,为集群的RAM角色添加ResizeDisk权限。 说明- 如果是ACK托管集群,无需进行授权操作。 - 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。 
- 单击基本信息页签,在集群资源区域找到Master RAM 角色并单击角色链接。 
- 在RAM控制台的角色页面,添加ResizeDisk权限。 - 添加权限具体步骤,请参见修改自定义权限策略内容和备注。  
 
操作步骤
在已有应用挂载动态云盘存储卷的情况下,您可以通过更新PVC存储容量声明的方式,在不暂停Pod的同时,在线扩容云盘存储卷。
下文以使用云盘动态存储卷中创建的应用为例,进行云盘存储卷扩容。
kubectl
- 连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群或在CloudShell上通过kubectl管理Kubernetes集群。 
- 查看扩容前Pod和云盘信息,以及对应的PVC和StorageClass。 - 查看云盘挂载的Pod的信息,确认Pod处于Running状态。 - kubectl get pod -l app=nginx- 返回示例如下: - NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 23h
- 查看云盘挂载目录的磁盘空间使用情况。 - kubectl exec disk-test-0 -- df -h /data- 返回示例如下: - Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data
- 查看PVC。 - kubectl get pvc- 返回示例如下,PVC名称为 - dik-pvc,该PVC绑定的云盘ID为- d-uf6axyb1er071h6o****,容量为20 GiB。PVC关联的StorageClass为- alicloud-disk-wait-for-first-consumer。重要- 如果是静态存储卷,需确认PVC中 - storageClassName的配置不为空,并且集群中存在同名的StorageClass。如果没有,请根据已有云盘存储卷的属性创建对应的StorageClass并配置- allowVolumeExpansion: true。- NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 20Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23h
- 查看StorageClass,确认已开启扩容。 - kubectl get sc alicloud-disk-wait-for-first-consumer -o yaml- 预期返回如下, - allowVolumeExpansion: true表示已开启扩容。- allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: "2025-01-21T08:48:26Z" name: alicloud-disk-wait-for-first-consumer resourceVersion: "59936" uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: cloud_auto,cloud_essd,cloud_ssd provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer
 
- 修改PVC,扩容云盘容量。 - 假设云盘容量要扩容到30 GiB,命令示例如下: - kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
- 等待一段时间(一分钟内)后,确认云盘是否扩容成功。 - 查看PVC。 - kubectl get pvc- 返回示例如下,可以看到云盘容量已扩容到30 GiB。 - NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 30Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23h
- 查看云盘挂载目录的磁盘空间使用情况。 - kubectl exec disk-test-0 -- df -h /data- 返回示例如下,可以看到已扩容成功。 - Filesystem Size Used Avail Use% Mounted on /dev/vdb 30G 24K 30G 1% /data
 
控制台
控制台操作仅支持动态存储卷,如果是静态存储卷,请参考kubectl操作。
- 登录容器服务管理控制台,在左侧导航栏选择集群列表。 
- 在集群列表页面,单击目标集群名称,进入集群管理页。 
- 确认云盘挂载的Pod处于Running状态,并查看Pod使用的PVC。 - 在集群管理页的左侧导航栏,选择。 
- 单击目标应用名称,然后在容器组页签下,确认Pod处于Running状态。  
- 单击Pod名称,然后在存储页签下,查看Pod使用的PVC。  
 
- 查看StorageClass,确认已开启扩容。 - 在集群管理页的左侧导航栏,选择。 
- 找到云盘存储卷使用的StorageClass,单击查看Yaml。 
- 确认已配置 - allowVolumeExpansion: true。 
 
- 修改PVC的存储容量声明,扩容云盘容量。 - 在集群管理页的左侧导航栏,选择。 
- 找到目标PVC,单击扩容。 
- 在弹出的对话框中,输入要扩容到的容量,选中注意事项,然后单击确定。  
- 等待扩容完成,确认PVC的总量已扩容。 
 
相关文档
- 如需在存储卷的使用率高于某个阈值时自动扩容存储卷,请参见配置云盘自动扩容策略实现自动扩容。 
- 如果在使用云盘存储卷的过程中碰到问题,请参见云盘存储卷FAQ进行排查。