容器服务 自动扩容

当云硬盘使用率超过阈值后,TKE 支持自动扩容 PV、对应的云硬盘及文件系统,无需重启 Pod 即可完成扩容,避免因磁盘空间不足导致业务中断。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、操作场景

自动扩容由独立的 cbs-auto-expander 组件(kube-system 命名空间下 DaemonSet)实现。该组件定期(默认5分钟)巡检本节点已挂载且开启自动扩容的云硬盘,当使用率超过阈值时,自动修改 PVC 的存储容量请求,触发 CBS-CSI 既有扩容链路,完成云硬盘与文件系统的自动扩容。

二、前提条件

·已创建 1.20 或以上版本的 TKE 集群。

·已将 CBS-CSI 升级至 v1.1.19 及以上版本并开启自动扩容功能(默认关闭)。

·(可选)为避免扩容失败导致数据丢失,可以在扩容前 使用快照备份数据。

·1.20 以下集群不支持在线扩容,需升级至 1.20 及以上版本。

三、创建允许自动扩容的 StorageClass

apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: cbs-auto-expand annotations: # 开启自动扩容(必须) cbs.csi.tencentcloud.com/auto-expand-enabled: "true" # 触发阈值:使用率超过 80% 时触发扩容 cbs.csi.tencentcloud.com/auto-expand-threshold: "80" # 扩容策略:percent(按百分比)或 absolute(按固定 Gi) cbs.csi.tencentcloud.com/auto-expand-scale-type: "percent" # 扩容增量:percent 模式下为当前容量的 50% cbs.csi.tencentcloud.com/auto-expand-scale: "50" # 扩容上限(Gi) cbs.csi.tencentcloud.com/auto-expand-limit: "2000" # 冷却时间(秒),同一 PVC 两次扩容的最小间隔 cbs.csi.tencentcloud.com/auto-expand-cooldown: "300"provisioner: com.tencent.cloud.csi.cbsparameters: diskType: CLOUD_PREMIUM# 允许扩容allowVolumeExpansion: truereclaimPolicy: DeletevolumeBindingMode: WaitForFirstConsumer

四、为特定 PVC 配置独立扩容策略

可在 PVC 的 metadata.annotations 上配置独立策略,PVC 注解优先级高于 StorageClass。示例如下:

apiVersion: v1kind: PersistentVolumeClaimmetadata: name: critical-pvc annotations: # 开启自动扩容(必须) cbs.csi.tencentcloud.com/auto-expand-enabled: "true" # 触发阈值:使用率超过 70% 时触发扩容 cbs.csi.tencentcloud.com/auto-expand-threshold: "70" # 扩容策略:absolute(按固定 Gi) cbs.csi.tencentcloud.com/auto-expand-scale-type: "absolute" # 扩容增量:每次固定扩容 200Gi cbs.csi.tencentcloud.com/auto-expand-scale: "200" # 扩容上限(Gi) cbs.csi.tencentcloud.com/auto-expand-limit: "4000" # 冷却时间(秒),同一 PVC 两次扩容的最小间隔 cbs.csi.tencentcloud.com/auto-expand-cooldown: "600"spec: storageClassName: cbs-auto-expand resources: requests: storage: 100Gi

五、常见问题

1. 使用率已超过阈值,但未触发扩容?

请逐项排查:

·kubectl get pvc <pvc-name> 确认 PVC 处于 Bound 状态。

·kubectl get pv <pv-name> 确认 PV 的 CSI Driver 为 com.tencent.cloud.csi.cbs。

·kubectl get pvc <pvc-name> -o yaml 确认 PVC 或其 StorageClass 上存在 cbs.csi.tencentcloud.com/auto-expand-enabled: "true" 注解。

·确认 PVC 未处于冷却期(检查 last-expand-time 注解,默认冷却 5 分钟)。

·确认 PVC 的 PersistentVolumeClaimResizing condition 不为 True。

·kubectl -n kube-system logs -l app=cbs-auto-expander 查看组件日志是否有报错。

·确认组件部署时的 –kubelet-root-dir 参数与集群实际 kubelet 根目录一致。

2. 自动扩容后文件系统没有变大?

·kubectl get pvc <pvc-name> 确认 PVC 容量已更新。

·kubectl describe pvc <pvc-name> 查看 FileSystemResizePending condition 状态。

·kubectl -n kube-system logs -l component=csi-resizer 查看 external-resizer 日志。

3. 如何临时禁用某个 PVC 的自动扩容?

执行以下命令为 PVC 添加禁用注解(不会删除已有扩容记录):

kubectl annotate pvc <pvc-name> cbs.csi.tencentcloud.com/auto-expand-enabled=false

赞 (0)
上一篇 4天前
下一篇 4天前