おうちKubernetesにLonghornを入れる

  1. Raspberry Piを買っておうちKubernetesクラスタを作る
  2. おうちKubernetesにSealedSecretsを入れる
  3. Raspberry Piの固定IP割当をルーターから指定する
  4. おうちKubernetesのcontrolplaneを3台に増やす
  5. おうちKubernetesLonghornを入れる <- イマココ

Nodeとなるマシンを一つ増やした.

ChuwiのLarkBox X2023.N100のCPUがほしいなーと思っていたんだけど,N100のMiniPCでDDR5メモリで500GB程度のSSDがあるものを探したら,これに落ち着いた. メモリが12GBと,8GBでも16GBでもないのだけれど,まぁnodeに使うだけだし特に気にせず買った.

これでAmazonのクーポン使って24900円.安い.

www.chuwi.com

で,そろそろ真面目に使えるようなクラスタになってきたので,PVCを作れるようにしたいと思う.というわけでSDSを入れよう. NASという手もあるんだけど,どうせnodeはみんな500GB程度のディスクを持っているし,そこまで大量のデータを入れるつもりもないので,とりあえずSDSを入れてみたいと思う.

SDSの選定

最終的にLonghornを選んでいるわけだけど,正直いまLonghornはそこまで主流ではないと思う.やはり今の主流はRook-Cephじゃないだろうか.

ただ,個人的にはそこまでパフォーマンスを求めていない.台数をあまり増やそうとも思っていないし,Cephの恩恵があるほどの規模になる予定がない. そうなると,むしろLonghornのように復旧が容易な方がメリットが大きいように思う.

ここで述べられている通り,LonghornであればLonghorn自体が壊れていてもデータを救出することができる.

ちなみにデータの救出については公式ドキュメントにも書かれている.

longhorn.io

ノード側の準備

LVMを有効化しておく

longhorn.io

ここに書かれている通り,LonghornではLVMを推奨している.こうすることで,/var/lib/longhorn に割り当てるパーティションの容量を,あとから変更することができるため,拡張性に優れている.

というわけで,Ubuntu Serverインストール時にLVMを有効化しておく.パーティションとして,適当なサイズを用意して /var/lib/longhorn にマウントしておく.

Longhornのインストール

longhorn.io

Helmでインストールするだけ.

service:
  ui:
    type: LoadBalancer

こうしておくと,MetalLBとかでIPを割り当ててくれるので,手元からアクセスできたりする.

バックアップの設定

これだけだとちょっと不安なので,大事なデータはバックアップを設定しておく.

まず,適当なS3 Bucketを用意して,そこにアクセスできるIAM Userを作り,

を,以前いれたSealedSecretsで暗号化してaws-secretsとか適当な名前のSecretsとして適用しておく.

あとはLonghorn UIから行う. Settings -> Generalを開いて,Backupセクションを探す.

Backup Target: s3://my-bucket@ap-northeast-1/
Backup Target Credential Secret: aws-secrets

こういう設定を入れる.

これであとは,同じくLonghorn UIから,個別のVolumeごとにBackupを取得できる. Backup作成のジョブは定期ジョブにすることもできる.

longhorn.io

参考

tech.opst.co.jp

light-of-moe.ddo.jp

www.aimhighergg.com