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

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(正式サポート)になったよ。
← 用語集にもどる