【シーエスアイドライバ】

CSIドライバ とは?

💡 あらゆるストレージをKubernetesに差し込める規格化されたアダプタ
📌 このページのポイント
CSIドライバ:KubernetesとストレージをつなぐA Kubernetes StorageClass PVC / PV kubelet CSI API CSIドライバ Controller Plugin ・ボリューム作成/削除 ・スナップショット Node Plugin ・マウント/アンマウント AWS EBS CSIドライバ NFS CSIドライバ Ceph CSIドライバ CSI規格に従えばどんなストレージでもKubernetesプラグインとして追加できる Kubernetes 1.13でGA(正式サポート)
CSIドライバがKubernetesと各ストレージをつなぐ仕組み
ひよこ ひよこ

CSIドライバって何をするものなの?

ペンギン先生 ペンギン先生

KubernetesがEBSやNFSなどのストレージを操作するとき、その「橋渡し役」になるプラグインだよ。CSI(Container Storage Interface)という統一規格に従って作られているから、Kubernetesストレージの種類を気にせず同じAPIで操作できるんだ。

ひよこ ひよこ

CSIがない昔はどうしてたの?

ペンギン先生 ペンギン先生

ストレージ連携のコードがKubernetesのコア本体に組み込まれていたんだよ。AWS EBSもGCE PD(Persistent Disk)もNFSも全部ね。でもストレージの種類が増えるたびにKubernetes本体を改修する必要があって大変だったんだ。

ひよこ ひよこ

それでCSIという標準規格を作ったんだね!

ペンギン先生 ペンギン先生

そうだよ。CSI規格に従ってドライバを作れば、Kubernetes本体を変更しなくても新しいストレージを追加できるようになったんだ。AWSならaws-ebs-csi-driver、AzureならAzure Disk CSIドライバ、といった感じで各社が公式ドライバを提供しているよ。

ひよこ ひよこ

CSIドライバを入れるとどんな操作ができるようになるの?

ペンギン先生 ペンギン先生

ボリュームの作成・削除・マウント・アンマウントはもちろん、スナップショットの取得やボリュームのオンラインリサイズもできるようになるよ。StorageClassと組み合わせれば動的プロビジョニングも使えるんだ。

ひよこ ひよこ

StorageClassCSIドライバの関係はどうなっているの?

ペンギン先生 ペンギン先生

StorageClassの `provisioner` フィールドにCSIドライバ名(例: `ebs.csi.aws.com`)を指定するんだよ。PVCが作られるとKubernetesStorageClassを参照してどのCSIドライバを呼び出すか決め、そのドライバが実際のストレージ操作を行う、という流れになっているんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
CSIドライバ」って出てきたら「KubernetesストレージをつなぐOSプラグイン的な役割の標準ドライバ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Container Storage Interface Driver」 = コンテナストレージインターフェースドライバ
💬 もともとKubernetesのストレージ連携はコアに組み込まれていたんだけど、ベンダー依存が増えすぎた反省からCSI標準が策定されたよ。Kubernetes 1.13でGA(正式サポート)になったよ。
← 用語集にもどる