当云盘存储卷的使用空间不足时,您可以扩容云盘容量以增加存储空间。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进行排查。