全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:管理csi-plugin和csi-provisioner组件

更新时间:Jan 16, 2026

CSI 存储组件(csi-plugin和csi-provisioner)支持自动化完成存储卷的动态创建、挂载、卸载、扩容等操作,以便像使用原生 Kubernetes 资源一样便捷地使用阿里云云盘、NAS等存储资源。

组件介绍

组件构成

ACK 集群已默认安装 CSI 组件。 csi-plugin 和 csi-provisioner 协同管理存储卷的生命周期。

组件

说明

部署形式

csi-plugin

在每个节点上运行,负责执行存储卷的挂载(Mount)、卸载(Unmount)以及文件系统格式化等节点侧操作。

DaemonSet

csi-provisioner

作为中心控制器运行,负责处理存储卷的动态创建、删除、扩容、快照等操作。支持云盘、NAS、OSS存储卷的管理。

Deployment

托管版与非托管版 csi-provisioner

为提升稳定性和简化运维,csi-provisioner提供托管版和非托管版两种模式。新建集群默认启用托管版。

  • 托管版(默认)
    组件 Pod 由 ACK 托管,在 kube-system 命名空间下不可见。ACK 负责组件维护和资源调优。

  • 非托管版
    组件 Pod 以 Deployment 形式部署在 kube-system 命名空间下,需自行管理资源配置(修改 Deployment YAML)及问题排查。

升级CSI组件

可在控制台组件管理页面查看组件版本并执行升级。

升级前检查

  • 检查版本兼容性:参见变更记录(csi-provisionercsi-plugin),确认目标 CSI 版本与当前集群版本兼容。

  • 检查 FlexVolume 迁移状态:若集群曾使用 csi-compatible-controller 组件从 FlexVolume 迁移至 CSI,未完成的迁移任务会阻塞 CSI 组件的自动升级。建议先完成迁移,或参见升级组件在迁移过程中手动升级。

  • 升级顺序依赖:存储组件存在依赖关系,为确保兼容性和稳定性,应按以下顺序依次升级:storage-operatorcsi-provisionercsi-plugin

执行升级

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

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

  3. 单击存储页签,定位csi-provisioner及csi-plugin,按顺序执行升级。

    如升级失败,请参见组件升级失败

    升级后,可在组件卡片区域查看版本是否符合预期。

应用于生产环境

  • 安全加固与元数据访问冲突:

    csi-plugin 需要访问元数据以获取节点信息(如地域、可用区等)。若禁用元数据访问权限,将导致组件启动失败或运行异常。请参见使用仅加固模式访问ECS实例元数据升级组件至相应版本。

    配置安全组或节点安全策略时,需确保 csi-plugin 组件 Pod 网络可以访问实例元数据服务。

  • 保持默认 StorageClass:

    ACK预置了alicloud-disk-essd等默认 StorageClass。修改其属性(如 provisionerparameters)可能导致组件升级异常。

常见问题

组件异常问题

CSI组件启动失败,镜像拉取失败,报错exec /usr/bin/plugin.csi.alibabacloud.com: exec format error

问题现象

csi-plugin组件Pod内的csi-plugin容器启动失败,日志中出现exec /usr/bin/plugin.csi.alibabacloud.com: exec format error错误。

问题原因

此错误通常与CPU架构不匹配有关,但 csi-plugin 默认同时支持 amd64 和 arm64 架构。因此,在受支持的节点上出现此问题,主要原因可能是 CSI 镜像文件损坏。

此情况通常为节点拉取镜像时被异常中断(如强制关机),导致节点本地镜像文件不完整。虽然镜像元数据存在,但其内部二进制可执行文件已失效或损坏,导致csi-plugin容器无法正常启动。

解决方案

  • 扩容新节点,然后排水当前节点。

  • 若需保留当前节点,则需执行以下操作:

    1. 排空当前节点上的应用,然后将该节点从集群中移除

    2. 登录节点,删除节点中所有的容器(如有)。

    3. 删除/var/lib/containerd目录下的所有文件。

    4. 将该节点重新添加到集群中

存储组件导致的OOM问题

csi-provisioner组件Pod中的Sidecar容器主要用于缓存Pod、PV、PVC等资源信息。集群规模较大时会消耗大量内存,可能导致容器OOM。

  • 托管版csi-provisioner:请提交工单处理。

  • 非托管版csi-provisioner:发生OOM时,根据集群规模调整Limit大小。

    1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

    2. 定位csi-provisioner组件,单击图标图标,然后单击查看YAML

    3. 根据集群规模修改组件YAML,调整Limit大小。

      修改limit大小

csi-plugin的Pod监控出现高网络流量

问题现象

在集群Pod监控中,csi-plugin组件Pod显示出较高的网络流量。

问题原因

此为预期行为。csi-plugin负责管理节点上NAS存储卷的挂载。当节点上的应用 Pod 通过 NAS 挂载点读写数据时,所产生的网络流量会经过 csi-plugin 所在的网络命名空间,因此被监控系统统计为其网络流量。

解决方案

此种情况无需解决,可以忽略。流量只是被记录,并不会实际消耗 csi-plugin 的资源,也不会产生双倍流量及重复计费。该情况属于监控数据归属现象,不影响实际性能,无需手动处理。

csi-provisioner组件日志出现failed to renew lease xxx timed out waiting for the condition报错

问题现象

执行kubectl logs csi-provisioner-xxxx -n kube-system命令查看CSI日志,出现failed to renew lease xxx timed out waiting for the condition报错。

问题原因

csi-provisioner 采用多副本模式实现高可用。为确保同一时间只有一个实例提供服务,副本之间通过 Kubernetes Lease 机制进行选主。该机制强依赖于与 API Server 的稳定通信。

报错表明 csi-provisioner 无法访问 API Server,导致选主过程失败,所有副本都无法成为 Leader 并提供服务。

解决方案

检查集群网络连通性和API Server状态。如无法解决,请提交工单处理。

组件升级失败

csi-plugin组件前置检查失败

问题通常出现在集群存储插件由Flexvolume迁移至CSI期间。可通过以下命令确认两个存储插件是否共存。

kubectl -nkube-system get ds csi-plugin flexvolume

若输出类似于:

NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
csi-plugin   4         4         4       4            4           kubernetes.io/os=linux   7d
flexvolume   4         4         4       4            4           kubernetes.io/os=linux   7d                                  

表明当前两个存储插件共存。

Flexvolume 和 CSI 无法在共存状态下升级。请先将所有 Flexvolume 类型的 PV/PVC 迁移至 CSI,然后卸载 Flexvolume,再继续升级 CSI 组件,详见将无存储集群的Flexvolume迁移至CSI

若不符合以上原因,且承载关键业务数据,请联系我们申请手动升级保障。

csi-plugin组件前置检查通过,但升级失败

csi-plugin 以 DaemonSet 形式部署,所有节点需处于健康状态。若集群中存在 NotReady 或非 Running 状态的节点,将导致升级失败。

需先修复故障节点,然后重新升级。若无法定位原因,请联系我们申请手动升级保障。

控制台有csi-plugin组件,但没有csi-provisioner组件

早期版本(1.14 及之前)的 csi-provisioner 通过 StatefulSet 形式部署。若当前集群中仍存在 StatefulSet 类型的 csi-provisioner 实例,需手动删除(kubectl delete sts csi-provisioner)后重新安装。

若操作异常,请联系我们申请手动升级保障。

csi-provisioner组件前置检查失败

问题通常出现在集群存储插件由Flexvolume迁移至CSI期间。可通过以下命令确认两个存储插件是否共存。

kubectl -nkube-system get ds csi-plugin flexvolume

若输出类似于:

NAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
csi-plugin   4         4         4       4            4           kubernetes.io/os=linux   7d
flexvolume   4         4         4       4            4           kubernetes.io/os=linux   7d                                  

表明当前两个存储插件共存。

Flexvolume 和 CSI 无法在共存状态下升级。请先将所有 Flexvolume 类型的 PV/PVC 迁移至 CSI,然后卸载 Flexvolume,再继续升级 CSI 组件,详见将无存储集群的Flexvolume迁移至CSI

若不符合以上原因,且承载关键业务数据,请联系我们申请手动升级保障。

csi-provisioner组件前置检查通过,但是升级失败

联系我们申请手动升级保障。

集群节点数量或权限不符合要求导致csi-provisioner组件升级失败

问题现象

  • 场景1:csi-provisioner组件前置检查失败,提示集群节点数量不符合要求。

  • 场景2:csi-provisioner组件前置检查成功,升级成功,但组件Pod进入CrashLoopBackOff状态,日志中出现类似下方403 Forbidden的日志。

    time="2023-08-05T13:54:00+08:00" level=info msg="Use node id : <?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n         \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n <head>\n  <title>403 - Forbidden</title>\n </head>\n <body>\n  <h1>403 - Forbidden</h1>\n </body>\n</html>\n"

问题原因及解决方案

  • 场景1

    • 问题原因:csi-provisioner 采用主备部署模式,两个副本需调度至不同节点以满足反亲和性要求。单节点集群无法满足此调度条件,导致第二个副本处于 Pending 状态,影响升级完整性。

    • 解决方案:为集群至少新增一个节点,确保多副本可正常调度。

  • 场景2

    • 问题原因:csi-provisioner 需要访问节点的实例元数据以获取实例ID、地域等信息,用于调用阿里云API。若节点启用了安全加固模式或配置了严格的网络策略,可能阻断对元数据服务的访问。

    • 解决方案:调整或关闭节点上的安全加固策略,确保 Pod 能够访问元数据服务。同时检查安全组规则、操作系统防火墙或相关的安全脚本设置。

StorageClass属性变更导致csi-provisioner组件升级失败

问题现象

csi-provisioner 安装或升级的前置检查失败,提示StorageClass 属性不符合预期。

问题原因

ACK 提供的默认 StorageClass具有固定配置,其核心字段(如 provisioner 和 parameters)不可变更。若手动删除并重建同名 StorageClass,将导致校验失败,从而中断组件升级流程。

CSI 安装程序严格校验这些资源的完整性,以保证组件行为一致性。

解决方案

  1. 删除集群中的默认StorageClass,包括alicloud-disk-essd、alicloud-disk-available、alicloud-disk-efficiency、alicloud-disk-ssd、alicloud-disk-topology。

    此操作不会影响已有 PV 和 PVC 的正常使用。
  2. 删除后重新安装csi-provisioner。安装后,系统会自动重新创建StorageClass,无需额外处理。

如需自定义StorageClass,请务必创建新名称的 StorageClass,避免修改或重建默认 StorageClass。

联系我们

如需申请手动升级保障,请使用钉钉搜索钉钉群号35532895加入钉钉群咨询。

相关文档