おうちでDynamic Provisioning! kubernetes-incubator/external-storage iSCSIクライアントを試してみる

こんにちは。 whywrite.it Kubernetes班のwhywaitaです。

皆さんも一家に一クラスタはKubernetes のクラスタがあると思いますが、永続化ストレージ (Persistent Volume)はいかがでしょうか。
近年はCSIという様々なストレージを同じように扱えるインターフェースが定義されているため、様々なベンダーがCSIに対応したストレージ製品やCSIに対応させるゲートウェイアプリケーションを公開していたりします。

ここにKubernetesコミュニティが認識しているCSI Driverの一覧が載っているのですが、見事にクラウド上のブロックストレージサービスのDriverが沢山ありますね。オンプレミス向けだと高価なハードウェアアプライアンス製品がちらほら。
自宅はクラウドではないので(?)、オープンソースで動作するiSCSIなどで解決したいのですが、CSIには実装がなく1、CSI以前から存在しているiSCSIを用いる実装はKubernetesにおけるPersistent Volume Claimを用いて動的にボリュームが作れない状況にありました2

そこでkubernetes-incubator/external-storageを用いて、iSCSIかつ動的にボリュームを確保する実装を動作させてみるのが本記事の内容です。

[ ※ 2021/07/31 追記 ]
執筆から1年以上経過し状況が変わっているため追記しておきます。

kubernetes-incubator Organization 配下にあったexternal-storageは現在 kubernetes-retired Organization にtransferされており、リポジトリ自体もRead-onlyとなっています。
Kubernetes v1.20以降では互換性が無くなってしまい動作しなくなりました。
有志がforkしたリポジトリでKubernetes v1.20以降でも動作するよう修正しているようなので、今から試す方はこちらをご利用ください。

[ 追記ここまで ]

(さらに…)