おうち Kubernetes クラスタ with M75q-1 Tiny × 3台
GCPに勉強用でKubernetesクラスタを建てていました。しかし結構コスパが悪いので、やっぱり家でKubernetesクラスタしましょう、ということで建ててみました。
物理クラスタ
自分のマシンがmacOSのマシンなので、やはり物理なLinuxマシンが欲しいという願望がありました。しかしデスクトップマシンを買ってそこで試したり、ESXiを建てるのはやったことがあったので、物理でクラスタ組んでみたくて検討しました。
クラスタにはLenovoのM75q−1 Tinyを3台用意しました。1台約3万円でRyzen 5 PRO 3400GE(4C/8T)、8GBなのでコスパが良いです。その気になったらストレージやメモリを増やそうと思っています。今のところそこそこ足りてる。
ちなみに良くカスタマイズされている無線LANとかディスプレイの追加出力とかは、全部つけてないです。クラスタなんだから、そんなのいらないです。
Spec | |
---|---|
CPU | AMD Ryzen 5 PRO 3400GE |
メモリ | 8GB |
SSD | 128GB NVMe |
フリートの方、させていただいております。 pic.twitter.com/Mvj8cOBrwm
— atpons (@atpons) 2020年11月11日
Kubernetesクラスタの構築
Hard Wayでもなければ基本公式のドキュメント通りに導入していくだけです。OSにはUbuntuを使いました。
Kubernetesクラスタは公式ドキュメントの通りにkubeadmでセットアップしました。コンテナランタイムにはcontainerdを使いました。
CNIにはCalicoを使いました。Calicoのインストールも公式ガイドの通りでインストールできました。
3台構成なのでとりあえずMasterはHAしないで、masterにもスケジュールされるようにしました。HA構成にしたくなったらまた考えます。
ストレージにRook-Ceph
PersistentVolumeも使いたいので、CSIにはRook-Cephを使いました。ブロックデバイスを指定するのそのうちやろうという感じなので、とりあえず storage.directories
にマウントしたところを刺しました。
ロードバランサにMetalLB
やっぱり type: LoadBalancer
を使いたいのでMetalLBを導入しました。L2-modeで問題無く動いてます。そのうちBGPモードも使ってもいいですが、まずはL2モードでやっていきます。
おわり
とりあえず動くKuberntesクラスタをこれでゲットできたので遊びます。M75q-1 Tinyは非常に小さく、静音性も良くてKubernetesクラスタにむいていると思います。
Raspberry Piで構築することもできますが、やはりamd64が動いた方が遊べますし、拡張性もあります。在庫があるうちに、ぜひやってみてください。