Container Storage Interface (CSI)

コンテナオーケストレーションシステム(KubernetesMesos、Cloud Foundryなど)に対して、任意のブロック/ファイルストレージシステムを統一的な方法で公開するための標準仕様。Kubernetes、Mesos、Docker、Cloud Foundryのコミュニティメンバーの協力によって策定された、Kubernetes本体からは独立した仕様(spec本体はKubernetesリポジトリの外にある)。

目的

ストレージベンダーが、Kubernetesのコア実装に手を入れることなく、独自のプラグイン(CSIドライバ)を書いてデプロイするだけで自社のストレージシステムをKubernetesから使えるようにすること。プロビジョニング、アタッチ/デタッチ、マウント/アンマウントといったストレージ操作を、環境をまたいで一貫したインターフェースで扱えるようにする。

Kubernetesでの経緯

Kubernetes v1.9でCSI仕様のalpha実装が公開され、v1.13でGA(General Availability)に到達した。それ以前はKubernetes本体のコードにストレージベンダーごとの実装を直接組み込む方式(in-treeプラグイン)だったが、CSIによってベンダー実装をKubernetesのリリースサイクルから切り離せるようになった。

Oxide Computerでの事例

CSIドライバが前提とする「稼働中のノードへディスクを動的にアタッチ/デタッチする」という振る舞い(ホットアタッチ)は、Oxide Computerのように独自にハードウェア〜ハイパーバイザー〜APIまで一気通貫で設計しているプラットフォームでは自明には成立しない。Oxideの制約「ディスクの着脱前にインスタンスを停止する必要がある」とCSIの前提が衝突し、ハイパーバイザー層まで遡った対応が必要になった。

Kubernetesの中での位置づけ

ストレージベンダー実装を本体から切り離すための標準インターフェース。クラウド連携におけるCCMと対になる「in-tree実装の切り出し」の一例だが、CSI自体はKubernetes専用ではなくオーケストレーター横断の仕様である点が異なる。

出典

#kubernetes #storage

作成日時: 2026-08-14 08:09 / 更新日時: 2026-08-14 08:21