【シーエスアイドライバ】
CSIドライバ とは?
💡 あらゆるストレージをKubernetesに差し込める規格化されたアダプタ
📌 このページのポイント
CSIドライバって何をするものなの?
KubernetesがEBSやNFSなどのストレージを操作するとき、その「橋渡し役」になるプラグインだよ。CSI(Container Storage Interface)という統一規格に従って作られているから、Kubernetesはストレージの種類を気にせず同じAPIで操作できるんだ。
CSIがない昔はどうしてたの?
ストレージ連携のコードがKubernetesのコア本体に組み込まれていたんだよ。AWS EBSもGCE PD(Persistent Disk)もNFSも全部ね。でもストレージの種類が増えるたびにKubernetes本体を改修する必要があって大変だったんだ。
それでCSIという標準規格を作ったんだね!
CSIドライバを入れるとどんな操作ができるようになるの?
ボリュームの作成・削除・マウント・アンマウントはもちろん、スナップショットの取得やボリュームのオンラインリサイズもできるようになるよ。StorageClassと組み合わせれば動的プロビジョニングも使えるんだ。
StorageClassとCSIドライバの関係はどうなっているの?
StorageClassの `provisioner` フィールドにCSIドライバ名(例: `ebs.csi.aws.com`)を指定するんだよ。PVCが作られるとKubernetesがStorageClassを参照してどのCSIドライバを呼び出すか決め、そのドライバが実際のストレージ操作を行う、という流れになっているんだ。
まとめ:ざっくりこれだけ覚えればOK!
📖 おまけ:英語の意味
「Container Storage Interface Driver」 = コンテナストレージインターフェースドライバ
💬 もともとKubernetesのストレージ連携はコアに組み込まれていたんだけど、ベンダー依存が増えすぎた反省からCSI標準が策定されたよ。Kubernetes 1.13でGA(正式サポート)になったよ。