LonghornのCSIスナップショット

投稿者: | 5月 15, 2022

Rancher K3sが軽くて完全なもので、これは便利。KindとかMinikubeを使っている場合じゃないかもと。ぶっちゃけ、コンテナは

  • コンテナ基盤本体 (k8s)
  • ネットワーク (CNI / Loadbalancer / Ingress DNSがあればベター)
  • プライベートレジストリ
  • ストレージ (PVC)

まわりが揃っていれば、基本、オンプレだろうが、クラウドだろうが問題ないかと。いままで、結構な手間(実際はスクリプト)で作っていたが、k3sは、そんな必要もなく、また、いままで使っていたものがほぼほぼ再利用ができた。さて、ひょんなことでCSIスナップショットのテストをするためにいくつかストレージを接続してみた。前回のLonghornに続き、Rook-Cephを接続してみた。全く問題なく使えた。

閑話休題

LonghornでCSIスナップショットを撮ってみる

今回のトピックは、LonghornのCSIスナップショットである。前回うまく行ったのか?というと、PVC作って利用するところまではうまく行った。しかし、スナップショットがうまくいかない。
俗に言う、マニフェストでPVCを作って、スナップショットを撮って、リストアしてPODの動作確認は問題なかったのだが、CSIスナップショットをしようとすると突然ハングする。まわりの詳しい方に聞いたところ。。。

Longhornには、ローカルボリュームのスナップショットと、バックアップターゲットへのバックアップがあり、CSIドライバを介して、スナップショットを取ると、なんと「両方」を作成するのが仕様とのことらしい。あくまでもCSIドライバ経由なので、普通の利用だと気がつかないかもしれない。しかし、自分のやっていたのは明らかにCSIドライバ経由。。。

ということで、CSIドライバ経由でスナップショットを取る場合は、バックアップターゲットを指定する必要がある。

 

Longhornのバックアップターゲットの指定

以下に詳しく書いてある

https://longhorn.io/docs/1.2.4/snapshots-and-backups/backup-and-restore/set-backup-target/

オブジェクトストレージあるいは、NFSv4が利用できる。オブジェクトストレージは大げさなので、NFSv4でやってみた。

以下でNFSv4のサーバをクラスタ内に立ち上げる。

kubectl apply -f https://github.com/longhorn/longhorn/blob/v1.2.4/deploy/backupstores/nfs-backupstore.yaml

ドキュメントのように指定してもうまく認識してくれないので、kubectl describe svcでEndpoint IPを調べて追加する。
ダッシュボードにアクセスして、Setting -> Generalのページを開き、以下のアドレスでバックアップターゲットを指定する。たまたま設置したLonghornのダッシュボードが役に立ったw

nfs://<IPアドレス>:/opt/backupstore

UntitledImage

正しく設定できたかどうかは、Backupタブに移って、エラーが表示されなければ設定完了。

これだけなんだが、こういうことになっていたとは気がつかず。実際にCSIドライバ経由でスナップショットを撮ってみると、BackupタブにちゃんとPVCが表示されている。

UntitledImage

これで、使いにくいcsi-hostpath driverともおさらば。(毎回おさらばしているが。。。なんやかんやで戻ることも。)

 

ちなみに、オブジェクトストレージは以下を実行するとクラスタ内にminioができる。

kubectl create -f https://raw.githubusercontent.com/longhorn/longhorn/v1.2.4/deploy/backupstores/minio-backupstore.yaml

以下を設定する。

Backup Target : s3://backupbucket@us-east-1/

Backup Target Credential Secret: minio-secret

外のオブジェクトストレージやNFSサーバに接続できたことがいまだにない。。。

コメントを残す