Rook: EdgeFS CSIを試す

Rookだらけの Advent Calendar 2019/12/23: Rook EdgeFS CSIを試す(CSIって聞くとホッとする)

makotow
makotow’s blog clone
11 min readDec 23, 2019

--

この記事は「Rookだらけの Advent Calendar」 2019/12/23分です。Rook EdgeFSについて記事を投稿します。

TL;DR

  • 著者はCSIと聞くと安心する
  • EdgeFS CSI は NFS/iSCSI が存在
  • (おそらく)Dynamic ProvisioningはCSI NFS/iSCSIを使う

EdgeFS には NFS, iSCSI がありますが、CSIモードのNFS, CSI もあります。

こちらがリポジトリのようですが、まだコミット数も少ない状態です。

Edge FSのNFS、iSCSIと何が違うのかについては歴史的な背景がありそうですが、はっきりとしたことはわかりません。やってみたところDynamic Provisioning したい場合はCSI版を使うことになりそうですし、これから始めるのであればCSIを実装しているドライバを使うほうがいいのではないかと思います。

CSI(Container Storage Interface)について知りたい場合はぜひこちらを。

EdgeFS NFSについてはこちらを。

事前準備

バージョンによってはCSIのCRDが入っていない可能性があるので確認し、なければ導入します。

上記コマンドでなにも出なかった場合は以下のコマンドでCSIのCRDを導入しておきます。

NFS, iSCSI をノードから使うため、ノード側にもパッケージが必要です

CSI NFS のデプロイ

これまでと同様に最初にクラスタ、テナント、バケットをEdgeFSで作成後、サービス公開をしてからKubernetes上でのCSI ドライバのデプロイとなります。

今回はCSI用に以下の環境をEdgeFSで作成しました。

  • Cluster名: csi-test
  • Tenant名: tenant01

edgefs-nfs-csi-driver-config.yaml というコンフィグファイルがあります、これを使ってsecretを作成します。

edgefs-nfs-csi-driver-config.yaml はCluster名、Tenant名を指定する箇所があるので準備したものを設定します。

rook 以下で以下のように作業ディレクトリへ移動します。すs

edgefs-nfs-csi-driver-config.yaml が該当箇所を変更します。

secret として上記内容を登録します。

次にCSI ドライバを作成します。

CSI のポッドが上がってきました。

ここまで来るともう安心です。

StorageClassの作成、PVCをバインド

StorageClassを作成からPVCバウンドまでを一気に実施します。

今回はexamplesにStorageClassからまるっと作ってくれるものが入っているのでそれを使います。

サンプルだと様々なパラメータが設定してありますが、上述したedgefs-nfs-csi-driver-config.yaml に記載済みのため省略 しました。

しっかりとBoundされました。nginx pod も立ち上がっています。

中身としては以下の通りです。

StorageClass

上記StorageClassを使ったPVCの例

EdgeFS 側では以下のようにバケットが作成されていました。

PVC バウンド後に自動でEdgeFSのバケットが作成されている。(pvc-2fa…)

まとめ

EdgeFS のNFS/iSCSIとCSI NFS/iSCSIはどう使い分けるのか?ということは感じますが基本路線はCSIを使うほうがこれからはいいと考えています。

今回もとりあえず動かすところをやってみました。はじめの一歩としてはこんなにすぐ正常に動くというところは素晴らしいと感じました。

またこの記事では記載しませんでしたが、CSIということでSnapshotやCloneにも対応しています。

--

--

makotow
makotow’s blog clone

kubernetes/container/docker/Programming/Go/Scala/Ruby/Mac/Emacs/IntelliJ/Rust/OpenShift.