すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:csi-plugin および csi-provisioner コンポーネントの管理

最終更新日:Nov 09, 2025

Container Storage Interface (CSI) コンポーネントには、csi-plugin と csi-provisioner が含まれます。これらのコンポーネントを使用すると、ボリュームを動的に作成、アタッチ、デタッチできます。

コンポーネントの紹介

クラスターを作成すると、次の CSI コンポーネントがデフォルトでインストールされます。

コンポーネント

説明

デプロイメントタイプ

csi-plugin

ボリュームのマウント、アンマウント、フォーマットを行います。

DaemonSet

csi-provisioner

ボリュームを動的に作成およびスケールアウトし、スナップショットを作成します。デフォルトでは、Elastic Block Storage、NAS、および OSS ボリュームの作成をサポートしています。

Deployment

説明

新しいクラスターを作成すると、マネージドバージョンの csi-provisioner がデフォルトでインストールされます。Alibaba Cloud はマネージドコンポーネントの運用および保守 (O&M) を担当するため、クラスター内で関連する Pod を表示することはできません。

csi-plugin および csi-provisioner のアップグレード

csi-plugin および csi-provisioner コンポーネントのバージョンを表示し、コンソールでアップグレードできます。

重要

csi-compatible-controller コンポーネントを使用して FlexVolume を CSI に移行していて、移行が完了していない場合、csi-plugin および csi-provisioner コンポーネントを自動的にアップグレードすることはできません。コンポーネントをアップグレードする前に、移行を完了する必要があります。または、移行中に CSI コンポーネントを手動でアップグレードすることもできます。詳細については、「コンポーネントのアップグレード」をご参照ください。

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

  3. [ストレージ] タブをクリックします。[csi-plugin] および [csi-provisioner] セクションで、利用可能なアップグレードを確認し、コンポーネントをアップグレードします。

    説明

    コンソールでのアップグレードが失敗した場合は、「コンポーネントのアップグレードの失敗」をご参照ください。

よくある質問

コンポーネントの問題

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 エラーを報告します。

原因

デフォルトでは、csi-plugin は amd64 と arm64 の両方のアーキテクチャをサポートしています。Pod が amd64 または arm64 アーキテクチャのノードで実行されている場合、イメージのプルが不完全なためにこのエラーが発生することがあります。不完全なイメージのプルとは、イメージのメタデータは存在するものの、イメージが正常にプルされなかったことを意味します。これにより、バイナリが無効になります。プロセスの途中でノードが強制的にシャットダウンされると、イメージのプルが失敗する可能性があります。ECS インスタンスの ActionTrail ログを確認して、シャットダウンコマンドが実行されたかどうかを判断できます。

解決策

  • 新しいノードを追加してクラスターをスケールアウトし、現在のノードをドレインします。

  • 新しいノードを追加したくない場合は、次の手順を実行します。

    1. 現在のノードからアプリケーションをドレインし、クラスターからノードを削除します。

    2. ノードにログインし、コンテナーがあればすべて削除します。

    3. /var/lib/containerd ディレクトリ内のすべてのファイルを削除します。

    4. ノードをクラスターに再度追加します。

ストレージコンポーネントに起因するメモリ不足 (OOM) の問題

csi-provisioner コンポーネントの Pod 内のサイドカーコンテナーは、Pod、永続ボリューム (PV)、PersistentVolumeClaim (PVC) などの情報をキャッシュします。これにより、クラスターのサイズが大きくなるにつれて、メモリ不足 (OOM) エラーが発生する可能性があります。

  • マネージドバージョンの csi-provisioner コンポーネントを使用している場合は、チケットを送信してサポートを依頼してください。

  • セルフマネージドバージョンの csi-provisioner コンポーネントを使用していて OOM エラーが発生した場合は、クラスターのサイズに基づいてメモリ制限を調整する必要があります。次の手順を実行します。

    1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[アドオン] をクリックします。

    3. [コンポーネント管理] ページで、[csi-provisioner] コンポーネントを見つけ、图标 アイコンをクリックして [YAML の表示] を選択します。

    4. クラスターのサイズに基づいてメモリ制限を調整するために、コンポーネントの YAML ファイルを変更します。

      修改limit大小

csi-plugin Pod で高いネットワークトラフィックが観測される

現象

Pod のモニタリングで、csi-plugin Pod のネットワークトラフィックが高いことが示されます。

原因

csi-plugin コンポーネントは、ノードへの NAS ボリュームのマウントを担当しており、これによりネットワークトラフィックが生成されます。ノード上の Pod が NAS ボリュームを使用すると、その Pod からの NAS リクエストトラフィックは csi-plugin 名前空間を通過します。このトラフィックはクラスターのモニタリングによって記録され、csi-plugin Pod の高いネットワークトラフィックとして報告されます。

解決策

操作は不要です。このトラフィックはモニタリングコンポーネントによって記録されるだけです。重複することはなく、余分なネットワーク帯域幅を消費することもありません。

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 コンポーネントは、複数のレプリカを実行する高可用性 (HA) コンポーネントです。Pod は、リーダー選出のために Kubernetes Lease オブジェクトを使用します。このプロセス中に、Pod は特定のリースを取得するために API サーバーにアクセスする必要があります。リースを取得した Pod がリーダーとなり、クラスターにサービスを提供します。このエラーは、csi-provisioner Pod が API サーバーへのアクセスに失敗した場合に発生します。

解決策

クラスターネットワークと API サーバーが正常に機能しているかどうかを確認してください。問題が解決しない場合は、チケットを送信してサポートを依頼してください。

コンポーネントのアップグレードの失敗

csi-plugin コンポーネントの事前チェックが失敗する

  • クラスターがディスク、NAS、または OSS ボリュームを使用していない場合、またはクラスターがテスト環境である場合は、イメージを手動で更新して csi-plugin コンポーネントをアップグレードできます。

    以下はサンプルコマンドです。<image url> を新しいバージョンのイメージの URL に置き換えてください。詳細については、「csi-plugin」をご参照ください。

    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 としてデプロイされていました。クラスターに csi-provisioner StatefulSet が存在する場合は、kubectl delete sts csi-provisioner コマンドを実行して削除します。その後、csi-provisioner コンポーネントを再インストールします。

エラーが発生した場合は、チケットを送信して手動アップグレードのサポートを依頼してください。

csi-provisioner コンポーネントの事前チェックが失敗する

  • クラスターが StorageClass を使用して作成されたディスク、NAS、または OSS タイプの動的プロビジョニングボリュームを使用していない場合、またはクラスターがテスト環境である場合は、イメージを手動で更新して csi-provisioner コンポーネントをアップグレードできます。

    以下はサンプルコマンドです。<image url> を新しいバージョンのイメージの URL に置き換えてください。詳細については、「csi-provisioner」をご参照ください。

    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 コンポーネントの事前チェックとアップグレードは成功しますが、コンポーネントの 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 Pod が実行されているノードでセキュリティ強化が有効になっています。このモードでは、ノード上のメタデータサーバーへのアクセスがブロックされ、エラーが発生します。

解決策

  • 現象 1 の解決策: csi-provisioner コンポーネントを更新します。詳細については、「csi-plugin および csi-provisioner コンポーネントの管理」をご参照ください。

  • 現象 2 の解決策: ノードのセキュリティ強化を無効にします。CSI はノードのメタデータにアクセスする必要があります。

StorageClass プロパティの変更により csi-provisioner コンポーネントのアップグレードが失敗する

現象

csi-provisioner コンポーネントの事前チェックが失敗し、StorageClass プロパティが期待値を満たしていないことを示すエラーが表示されます。

原因

デフォルトの StorageClass のプロパティが変更されました。これは、同じ名前の StorageClass を削除してから再作成した場合に発生する可能性があります。StorageClass のプロパティは不変です。変更すると、コンポーネントのアップグレードは失敗します。

解決策

alicloud-disk-essd、alicloud-disk-available、alicloud-disk-efficiency、alicloud-disk-ssd、alicloud-disk-topology など、クラスター内のデフォルトの StorageClass を削除する必要があります。この削除は既存のアプリケーションには影響しません。StorageClass を削除した後、csi-provisioner コンポーネントの再インストールを試みます。インストールが完了すると、システムは自動的に StorageClass を再作成します。これ以上の操作は必要ありません。

重要

カスタム StorageClass が必要な場合は、別の名前で新しいものを作成してください。デフォルトの StorageClass は変更しないでください。

参考資料

  • CSI の詳細については、「alibaba-cloud-csi-driver」をご参照ください。

  • コンポーネントのインストールおよびアンインストール方法の詳細については、「コンポーネント」をご参照ください。