- Raspberry Piを買っておうちKubernetesクラスタを作る
- おうちKubernetesにSealedSecretsを入れる
- Raspberry Piの固定IP割当をルーターから指定する
- おうちKubernetesのcontrolplaneを3台に増やす
- おうちKubernetesにLonghornを入れる <- イマココ
Nodeとなるマシンを一つ増やした.
ChuwiのLarkBox X2023.N100のCPUがほしいなーと思っていたんだけど,N100のMiniPCでDDR5メモリで500GB程度のSSDがあるものを探したら,これに落ち着いた. メモリが12GBと,8GBでも16GBでもないのだけれど,まぁnodeに使うだけだし特に気にせず買った.
これでAmazonのクーポン使って24900円.安い.
で,そろそろ真面目に使えるようなクラスタになってきたので,PVCを作れるようにしたいと思う.というわけでSDSを入れよう. NASという手もあるんだけど,どうせnodeはみんな500GB程度のディスクを持っているし,そこまで大量のデータを入れるつもりもないので,とりあえずSDSを入れてみたいと思う.
SDSの選定
最終的にLonghornを選んでいるわけだけど,正直いまLonghornはそこまで主流ではないと思う.やはり今の主流はRook-Cephじゃないだろうか.
ただ,個人的にはそこまでパフォーマンスを求めていない.台数をあまり増やそうとも思っていないし,Cephの恩恵があるほどの規模になる予定がない. そうなると,むしろLonghornのように復旧が容易な方がメリットが大きいように思う.
CephとLonghornの違い。Ceph など多くのSDSはVolに書き込まれたデータをある一定サイズに分割し、複数のノードに分散配置。分散ノードでの並列IOが可能なため、ノード数に応じて性能向上(CPU/メモリー/ネットワークが潤沢なら)。ただし障害時の復旧はCeph任せになる
— ysakashita (@ysakashita3) 2022年10月12日
ここで述べられている通り,LonghornであればLonghorn自体が壊れていてもデータを救出することができる.
ちなみにデータの救出については公式ドキュメントにも書かれている.
ノード側の準備
LVMを有効化しておく
ここに書かれている通り,LonghornではLVMを推奨している.こうすることで,/var/lib/longhorn
に割り当てるパーティションの容量を,あとから変更することができるため,拡張性に優れている.
というわけで,Ubuntu Serverインストール時にLVMを有効化しておく.パーティションとして,適当なサイズを用意して /var/lib/longhorn
にマウントしておく.
Longhornのインストール
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作成のジョブは定期ジョブにすることもできる.