おうちKubernetesに入門する

# 🎵おうちKubernetesに入門したきっかけ
普段から業務でKubernetes(GKE)を使っているのですが、あまり理解していないままArgo CDポチポチしているだけなのでちゃんと理解したいなと思っていました。そんな時に以下の良記事に出会いまして良い機会だし勉強も兼ねてやってみました
ということで以下の記事に触発されてまんまと作ってしまった犠牲者（いい意味）のうちの1人になります笑
https://qiita.com/takumi3488/items/2eb4692a5672ee475998
> エンジニアは全員おうちKubernetesをやるべし

こんなこと言われたらそりゃやるしかないですよね！

# 🐳おうちKubernetesとは
定義されているのか分かりませんが、筆者の理解だとオンプレミスでKubernetesクラスターを作るということです。
色々な方の記事を見ましたが、ラズパイで作っている方が多い印象だったので、筆者もラズパイで構築しています。

# 🔧準備
今回おうちk8sを構築するにあたり購入したものは以下になります。
<img src="https://storage.googleapis.com/zenn-user-upload/8ce22e8bac7b-20240831.jpg" width=30%>

**※最後のまとめで製品名など詳細や購入金額を記載しています。**

特にスイッチは初めて購入したのでこれからVLAN等色々設定いじってみようとウキウキしてます笑
こだわりポイントとしてはスイッチをPoE対応のものにしたことです。スイッチから電源を供給してくれるのでラズパイ側で電源ケーブルを用意する必要がありません。３台もラズパイがあるとそれだけで電源ケーブルが３つ必要になって配線等美しくないと思ったためです。
しかしここにこだわったため後々苦労することに...

# 🏗️クラスター構築（物理）
ラズパイを３つ使ってクラスターを構成していきます。マスターノードを１つ、ワーカーノードを２つの構成にします。

:::details ラズパイの進化
久しぶりにラズパイを触ったのですが、一度設定してしまえば前と同じ設定ができるようになっており、設定がとても楽になっていました。またラズベリーパイConnectという機能を使うと、リモートデスクトップやリモートシェルへの接続なども簡単にできて本当に驚きでした。ラズパイの進化を感じられるという副次的な効果も享受できたので、それだけでもやって良かったなと思いました。
:::

### ラック組み立て
ここからラックを組み立てていきます。（あるあるっぽいですが説明書が小さすぎてネジの位置等よく見えないためほとんど感覚で組み立てました笑）
ヒートシンクやファンを取り付け試行錯誤しながら完成させました。なんだかんだ3時間ほどかかったかもしれません。
<img src="https://storage.googleapis.com/zenn-user-upload/455498a3e884-20240831.jpg" width=30%>

*ラックに納まるラズパイ達*

### ラズパイ起動
そして運命の瞬間、ウキウキでスイッチをルーターに接続し、スイッチとラズパイをLANケーブルで繋ぎました。ここで筆者の想定だとラズパイ達がファンの音を轟々と立てながら元気に起動してくれるはずでした。しかしラズパイ達はうんともすんとも言いません。おかしい、LANケーブルがPoEに対応していないのか、スイッチ側の設定に問題があるのか色々確認しましたが特に問題はなさそうでした。ネットで原因を探ること数分、ご存知の方からしたらそりゃそうよとなるかもしれないのですが、ラズパイは購入した状態のままだとPoEに対応していないらしくPoE Hatという別の部品が必要になるとのことでした。まさかここで躓くとは。急いでPoE HatをAmazonで注文し翌日にはなんとかPoEでの電力供給を完了することができました。

### またも問題発生
一難去ってまた一難。電源供給は確認できたのですが、今度はPoE Hatの部品がデカすぎてラックに干渉し、組み立てがうまくできなくなってしまいました。（同じ会社の製品を買ったのにまさかの展開😭）仕方ないのでラックの支柱を繋ぎ合わせ高さを出すようにしました。この大きさもう少しなんとかならんかったのかと思いましたがこうしたうまくいかないのも自作の楽しみの一つと捉え今回は目を瞑ることにしました。

そんなこんなで無事（？）ラズパイ３つをラックで組み立てることができました。
また、k8sクラスターですが今回は24時間365日動かすつもりはないので、使っていない時は電源を切っておこうと考えました。理由としてはもちろん電気代も気になりますが、一番は火災が怖いからです。筆者は元消防士🧑‍🚒なのですが、辞めた今でもプライドにかけて火を出すことは許されないのです。ということで使っていない時は電源を切っておきたいのですが、ルータの位置関係上、今回構築したk8sクラスターは1階に置くことにしており、筆者の部屋がある3階からわざわざ1階に降りて行ってプラグを抜くのは面倒でした。そこでここではスマートプラグを使うことにしました。買ったのはスイッチと同様TP-Linkさんの製品で、スマートフォンからk8sクラスターの電源オン・オフができます。
<img src="https://storage.googleapis.com/zenn-user-upload/98f7ca3c1759-20240831.jpg" width=30%>
<img src="https://storage.googleapis.com/zenn-user-upload/2655571b6538-20240831.jpeg" width=30%>
*スマートフォンアプリの画面*

スマートフォンからタップするだけのこの起動方法は音や光も相まって筆者の一番のお気に入りポイントです✨

![](https://storage.googleapis.com/zenn-user-upload/c9d820a75644-20240831.gif)

# 💻クラスター構築（論理）
ここはほとんどChatGPTに聞きながら構築を進めました。（便利な世の中になりました。）
詳しい構築の方法は他にたくさん良い記事が転がっているのでここでは割愛します🙏

最初はkubeadmを使って構築して行ったのですが、なぜか`kubectl get nodes`をするとノードの一覧が表示される場合と、コネクションがうまく繋がらないことがあり、flakyな状態だったためこちらは諦めてk3sでの構築に変更しました。k3sに変えたところすんなりいったのでこの方法で今後も進めていこうと思います。
**起動した状態がこちら↓**
![](https://storage.googleapis.com/zenn-user-upload/14e7d5c1c46e-20240831.png)

# 📔まとめ
これから何をやるかはまだ決まっていませんが、とりあえず業務でやっているようなことができるようArgo CDの構築だったりGrafana、Prometheusの導入などできたら良いなと思ってます。
まだまだk8s初心者ですが環境は用意できたのでこれから色々触りながら勉強していきたいと思います！

今回購入したものの合計金額は60,922円でした！(かなり高くなってしまいましたがラズパイの中古買ったりメモリの容量抑えることで5万円以下でも組めると思います！)
| 製品名 | 個数 | 単価 |
| ---- | ---- | ---- |
| Raspberry Pi 4 Model B 8GB | 3 | 12,480 |
| TP-Link TL-SG105PE | 1 | 7,500 |
| TP-Link スマートプラグ | 1 | 1,290 |
| GeeekPi Pi4クラスターケース | 1 | 2,299 |
| GeeekPi 分離PoE HAT | 3 | 2,799 |
| Ankuly CAT8 LANケーブル 0.5m | 2 * 2 | 999 |
| Silicon Power microSDカード 64GB | 3 | 666 |

ここまで読んでいただきありがとうございます！皆さんもおうちk8sライフを楽しみましょう！