全部產品
Search
文件中心

Container Service for Kubernetes:管理csi-plugin和csi-provisioner組件

更新時間:Aug 30, 2025

CSI儲存群組件包括csi-plugin和csi-provisioner,通過CSI組件可以實現儲存卷的動態建立、掛載、卸載等功能。

組件介紹

建立叢集時,預設會安裝以下CSI儲存群組件:

組件

說明

部署形式

csi-plugin

實現資料卷的掛載、卸載、格式化等功能。

DaemonSet

csi-provisioner

實現資料卷的動態建立,動態擴容,建立快照等能力。預設支援Block Storage,NAS, OSS三類儲存卷的建立。

Deployment

說明

建立叢集將預設安裝csi-provisioner託管版。託管版組件由阿里雲負責營運,您在叢集中無法看到相關Pod。

升級csi-plugin和csi-provisioner

您可以在控制台查看csi-plugin和csi-provisioner組件版本並升級組件。

重要

如果叢集通過csi-compatible-controller組件遷移Flexvolume至CSI,且該流程未完成時,無法自動升級csi-plugin和csi-provisioner組件,建議您先完成遷移後再升級組件,或者在遷移過程中手動升級CSI組件。具體操作,請參見升級組件

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

  3. 單擊儲存頁簽,在csi-plugincsi-provisioner組件地區,查看目前的版本是否需要升級,並升級組件。

    說明

    如果控制台操作升級失敗,請參考組件升級失敗處理。

常見問題

組件異常問題

CSI組件啟動失敗,鏡像拉取失敗,報錯exec /usr/bin/plugin.csi.alibabacloud.com: exec format error

問題現象

csi-plugin組件的Pod內csi-plugin Container報錯exec /usr/bin/plugin.csi.alibabacloud.com: exec format error

問題原因

csi-plugin預設支援amd64和arm64多架構,如果當前Pod所在節點屬於amd64或arm64架構,則可能是當前節點的鏡像拉取未完成所導致,即鏡像中繼資料已存在,但是實際鏡像未拉取成功,導致二進位失效。鏡像拉取失敗的可能原因是由於在拉取鏡像過程中強制關機導致,您可以查看當前節點對應ECS執行個體的Action Trail確認是否有關機命令。

解決方案

  • 擴容新節點,然後排水當前節點。

  • 如果不想使用新節點,則需要執行以下操作:

    1. 排水當前節點的應用,然後將當前節點從叢集中移除。

    2. 登入該節點,刪除節點中所有的Container(如有)。

    3. 刪除/var/lib/containerd目錄下的所有檔案。

    4. 將該節點重新加入叢集。

儲存群組件導致的OOM問題

csi-provisioner組件對應Pod中的Sidecar容器主要用於緩衝Pod、PV、PVC等資訊,隨著叢集規模增加,會造成記憶體OOM。

  • 如果使用的託管版csi-provisioner組件,請提交工單處理。

  • 如果使用的非託管版csi-provisioner組件,當發生OOM時,您需要根據叢集規模自行調整Limit大小,具體操作如下:

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

    3. 組件管理頁面,找到並選中csi-provisioner組件,單擊對應的表徵圖表徵圖,然後選擇查看YAML

    4. 根據叢集規模修改組件的YAML檔案,自行調整Limit大小。

      修改limit大小

csi-plugin的Pod監控上出現大量流量

問題現象

在叢集Pod監控上,csi-plugin的Pod出現大量流量。

問題原因

csi-plugin負責當前節點上NAS儲存卷的掛載。由於使用NAS會產生網路流量,當節點存在NAS掛載點(即存在使用NAS的Pod)時,Pod發起的NAS請求流量就會經過csi-plugin的Namespace,從而被叢集監控記錄,造成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是高可用多副本組件,多Pod組件之間需通過Kubernetes Lease選主,選主過程中需要訪問API Server來擷取指定的Lease,擷取到Lease的組件就稱為Leader,為叢集提供服務。當前報錯由於csi-provisioner訪問叢集內的API Server失敗導致。

解決方案

請排查叢集網路和API server狀態是否正常。如無法解決,請提交工單處理。

組件升級失敗

csi-plugin組件前置檢查失敗

  • 若您的叢集沒有使用雲端硬碟、NAS或OSS類型的儲存卷,或叢集為測試環境,請手動更新鏡像以升級csi-plugin組件。

    命令樣本如下,請參考csi-plugin替換<image url>為要升級的鏡像地址。

    kubectl set image -n kube-system daemonset/csi-plugin csi-plugin=<image url>
  • 若您的叢集使用了雲端硬碟、NAS或OSS類型儲存卷,且包含關鍵業務資料,請提交工單申請手動升級保障。

csi-plugin組件前置檢查通過,但升級失敗

由於csi-plugin是Daemonset組件,如果當前叢集存在NotReady或者其他非Running狀態的節點,就會導致升級失敗。您需要手動處理故障節點,然後重新升級。

若無法找到具體原因,請提交工單申請手動升級保障。

控制台有csi-plugin組件,但沒有csi-provisioner組件

csi-provisioner的歷史版本(1.14及之前)採用StatefulSet部署。如果叢集中存在StatefulSet類型的csi-provisioner,請執行kubectl delete sts csi-provisioner刪除,然後重新安裝csi-provisioner組件。

若操作出錯,請提交工單申請手動升級保障。

csi-provisioner組件前置檢查失敗

  • 若您的叢集沒有使用通過StorageClass建立的雲端硬碟、NAS或OSS類型的動態儲存裝置卷,或叢集為測試環境,請手動更新鏡像以升級csi-provisioner組件。

    命令樣本如下,請參考csi-provisioner替換<image url>為要升級的鏡像地址。

    kubectl set image -n kube-system deployment/csi-provisioner csi-provisioner=<image url>
  • 若您的叢集使用通過StorageClass建立的雲端硬碟、NAS或OSS類型的動態儲存裝置卷,且包含關鍵業務資料,請提交工單申請手動升級保障。

csi-provisioner組件前置檢查通過,但是升級失敗

提交工單申請手動升級保障。

叢集節點數量不符合要求導致csi-provisioner組件升級失敗

問題現象

  • 現象1:csi-provisioner組件前置檢查失敗,報錯叢集節點數量不符合要求。

  • 現象2:csi-provisioner組件前置檢查成功,升級成功,但是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為了保證高可用,它包含主從Pod,並且主從Pod必須在不同的節點上。如果當前叢集只有1個節點,會導致該組件升級失敗。

  • 現象2原因:csi-provisioner所在節點開啟了安全強化模式,該模式禁止了節點上metadata server的訪問,導致此報錯資訊。

解決方案

  • 現象1解決方案:您需要更新csi-provisioner組件。具體操作,請參見管理csi-plugin和csi-provisioner組件

  • 現象2解決方案:關閉節點上的安全強化模式,CSI必須要訪問到節點的中繼資料。

StorageClass屬性變更導致csi-provisioner組件升級失敗

問題現象

csi-provisioner組件前置檢查失敗,報錯StorageClass屬性不符合預期。

問題原因

預設StorageClass的屬性被變更過,您刪除重建過同名的StorageClass。StorageClass屬性都是不可變的,否則會導致該組件升級失敗。

解決方案

您需要刪除叢集中預設的StorageClass,包括alicloud-disk-essd、alicloud-disk-available、alicloud-disk-efficiency、alicloud-disk-ssd、alicloud-disk-topology,刪除過程不會對現有應用造成任何影響。刪除後,請嘗試重新安裝csi-provisioner組件。安裝後,系統會自動重新建立StorageClass,無需您額外處理。

重要

如果您需要自訂的StorageClass,請建立新的StorageClass名稱使用,請勿修改預設的StorageClass。

相關文檔