はじめに
こちらの記事に感化され、元々興味があった k8s を自宅で構築してみました。
今回はおうち k8s をやってみてよかったこと等をつらつら書いています。
ちなみに、我が家の k8s は Raspberry Pi 4 で構築しており、kubeadm によるセットアップを行いました。minikube でもおうち k8s はできると思いますが、ラズパイなどでクラスターを組めば、富豪的に k8s を利用してスペック不足になっても、ハードの追加による解決が簡単なことが推しポイントです。1
今では、メモリ 8GB が 3 台、メモリ 4GB が 2 台の計 5 台の Raspberry Pi 4 で構成し、マルチコントロールプレーン構成をしています。初期は 8GB が 1 台、 4GB が 2 台のシングルコントロールプレーン構成でしたが、エコシステムなどをたくさん追加した結果、スペック的に辛くなり、せっかくなのでということで+2 台追加し、さらにマルチコントロールプレーン構成にしました。2
必要な諸々を Amazon で購入し、合計で 10 万円程度は使ったと思います...(大人っていいですね)
とにかく学びが多い
前提として私は k8s に関する有名どころの書籍を結構読んだりしていたのですが、やはり実際に触ってみると改めて学べたことが多かったです。例えば以下のような学びがありました。3
- k8s の Node 前提条件
- k8s のアーキテクチャ全体像や各コンポーネントの役割
- 通信や認証で利用される各種証明書の存在
- taints/tolerations によるノードへの Pod (非)スケジューリング
- 私の環境では節約のためにコントロールプレーンにも Pod をスケジューリングするように設定しています。
- CNI プラグインの設定による Pod 間通信
- CNI プラグインなしでは Pod 間通信ができないことを知りました。
- マネージドサービスのありがたさ
- コントロールプレーンの設定から運用まで、LoadBalancer や PV 等のいい感じのデプロイから、マネージドサービスのありがたさを痛感しました。
- k8s や Linux のトラブルシューティングについて
- 各種エコシステムについて
- などなど...
上記はおうち k8s を行わずとも学べることも多いですが、実際に動かすことで理解が深まったり、そもそも理解しないと前に進めないことも多く、強制的に学べたことが良かったと思っています。
また私は Linux や Linux の関連技術に対する知識も十分にはなかったので、セットアップやネットワーク設定、ツール、コマンドなど、改めて学べることが多かったです。
まだまだわからないことは多いですが、知らないことを知れたのでこれからどんどん学んでいければと思います。
一度組めば4電気代だけで様々なエコシステムを試せる
k8s の魅力の一つに「様々なエコシステム」があると私は思っています。各エコシステムの Why や How を知るためには多くの時間を割いて実際に試してみる必要があると思います。
パブリッククラウドを利用してエコシステムを試すことはできますが、個人利用であれば金額面がネックになってきます。試してすぐにクラスター毎削除することで節約できますが、このやり方だと、
- 長期的に試すことが難しく、エコシステムの良さがわかりにくい可能性がある
- そもそも試すのに腰が重い
というデメリットがあるかと思います。特に2つ目のデメリットは、学習という観点では一番厄介かなと個人的には感じます。
おうち k8s であれば、電気代だけで k8s を動かせるので、エコシステムを気軽に試すことができます。また、長期的に試すことも、ほったらかしにしておくことに対しても心の余裕があります。そのため、私は気になったエコシステムはとりあえずインストールしてみることにしています。
余談ですが、k8s のエコシステムは helm や少ないコマンドでインストールできるものが多いので、気軽にインストールできるのも魅力だと感じました。
ちなみに私が試してみたエコシステムは以下の通りです。
- cilium
- tekton
- argocd
- argo rollouts
- prometheus
- metallb
- grafana
- istio
- loki
- jaeger
- などなど
今後は fluentd、fluentbit、eBPF を利用しているサービスメッシュなどを試してみたいと思っています。また、これらエコシステムは導入しただけのものも多いので、良さがわかるまで使い倒していきたいと思います。(これが電気代だけでできるのはありがたいです。)
プラスな評価をされることが多かった
こちらは私がまだ経験が浅い人材という背景もあるかと思いますが、おうち k8s に関してはプラス評価されることが多かったです。例えば以下のようなことがありました。
- 職場で k8s 関連の話題が出た際に、適宜意見を求められることが多くなった。
- 転職活動にて評価されることが多く、実務経験が足りていない場合でも、おうち k8s での経験が評価された。
私自身実務での経験は浅いのですが、おうち k8s での経験が評価され、面接の際に話題にされることが多かったです。技術力だけではなく、意欲という面でも評価していただけたことが何度かあり、ありがたかったです。
終わりに
おうち k8s は楽しいですし、メリットしかないと思っています。学びが多いし、エコシステムを試すことができるし、人から褒められることも多い(多分)です。これからもおうち k8s で学び続けていきたいと思います。
ただ、実務としての k8s 利用ではないので
- どのようにクラスターや namespace を切るのが良いか
- GitOps するならどういうリポジトリやディレクトリ構造が良いか
- エコシステムの選定はどうするか
- エコシステムのバージョンアップはどうするか
などの課題を学ぶのは難しいなーと感じています。ここら辺は、いつか実際に実務で経験、議論してみたいと思いました。
また、今後もおうち k8s で k8s や各種エコシステムについて学び続けていきたいと思います。