Kubernetesをラボで検証しているとCSIドライバの選択肢が少なくて悩む。
Hostpath Driver
簡単にスナップショットの検証ができるのだが、パーミッションの問題があって展開するときに、呪文を付けないとうまく動かない。特にbitnamiのhelmは必ず呪文が必要。常用にすると他で潰しが効かなくなる。はっきり言って今や使わず。
Longhorn
これは、有りか。シングルノードで動かしたことはない。ダッシュボードあり。
Ceph
RBDとFSが使える。また、シングルノードでも動く。ダッシュボードあり。さらにFSはReadWriteManyが使える。今のところ常用だが激重なので、リソース注入しないとダメ。
ただ、上記の3つは、あくまでも腹持ちのストレージを使うソリューション。外部の箱を使いたいとなるとNFSだが、スナップショットとかは動かない。さすが高価なストレージ機器を買うお金も場所も電源もない。
SynologyのCSIドライバがいつの間にかに出ていた。非公式のものがあったのは知っていたが。
以下から入手ができる。
https://github.com/SynologyOpenSource/synology-csi
条件としては
DSM7が必要 ( メモリ増設が必須か?というくらい普通に使ってても重い)
iscsiのボリュームができる
以下によると、
https://kubernetes-csi.github.io/docs/drivers.html
Snapshot, Expansion, Cloningができるらしい。
自分のは容量が完全に枯渇しているので試せないけど、メモ。
(実家で使っているショボいDS416Slimとか使えるのかなぁ。VAAI NFSドライバは動いたのだが)
git clone git@github.com:SynologyOpenSource/synology-csi.git
cd synology-csi
cp config/client-info-template.yml config/client-info.yml
vi config/client-info.yml
—
clients:
– host: <Synology IP>
port: <Synology Port>
https: true
username: <Synology user>
password: <Synology password>
以下でインストール
./scripts/deploy.sh run
完成確認
kubectl get pods -n synology-csi
Storage Classなどを導入
kubectl apply -f deploy/kubernetes/v1.19/storage-class.yml
kubectl apply -f deploy/kubernetes/v1.19/snapshotter/volume-snapshot-class.yml
というわけで手持ちのSynology DS918pのダイエットだぁ。。。
やってみた。動いた。ちなみにシングルノードでは動かずマルチノードじゃないとだめ。
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
default (default) csi.vsphere.vmware.com Delete Immediate true 35h
synology-iscsi-storage csi.san.synology.com Retain Immediate true 7m47s
ISCSI LUNも作成される。(ディスクがパンク気味なのはご愛嬌w)
RETAINとなっているのでPVCを消してもそのまま残るので注意。
動作確認は、 DS918pと DS416Slimで試したが、DSM7であれば両方で動いた。ストレージスナップショットも使える。ただ、以下のDockerが使える以下のモデルがお勧め。(安いモデルだとPlus、末尾にpが付くモデルですね。)
https://www.synology.com/ja-jp/dsm/packages/Docker
以下、現時点でのVanilla Kubernetesで使っているストレージドライバー一覧。Synologyは、iSCSI(スナップショット可)、NFS、SMB、vSphere上で作ってデータストアにしたら、vSphereまで使えるというフルプロトコルサポートという状態。QNAPと比べるとVAAIクローンが少し遅いのが玉に瑕。