Docker Composeに飽きてくると、次に欲しくなるのがKubernetes。でも本家k8sは重すぎる。そこでk3s。Rancher社が開発した軽量Kubernetesで、ラズパイでも動く。
「自宅k3sクラスタ!」ってテンション上がって組み始めたのはいいものの、これがまあ沼だった。結論から言うと、個人の趣味ならk3sはアリだけど、実用性だけならDocker Composeの方が圧倒的にラク。正直な感想を書く。
k3sを半年使って感じたメリット:
- 宣言的設定 — YAMLで全リソースを定義。GitOpsで管理できる。ArgoCDと組み合わせると「Gitにpushしたら自動デプロイ」が実現する。
- 自己修復 — Podが落ちたら自動再起動。ノードが死んだら別ノードに再配置。
- ローリングアップデート — 無停止でアプリを更新できる。ダウンタイムゼロ。
- 勉強になる — k8sの経験はキャリアに直結する。自宅k3sで遊んだ知識が仕事で活きた。
そして現実(デメリット):
- 複雑すぎる — Pod、Service、Ingress、ConfigMap、Secret、PVC、StorageClass…概念の数がハンパない。YAMLの行数がすぐ数千行になる。
- トラブルシュートが地獄 — PodがPendingから動かない。ログを見ても原因不明。結局Podを消して再作成、が最終手段。
- オーバーヘッド — 何もしなくてもノードあたり500MB〜1GBのメモリをk3s自体が消費する。
- 個人にはオーバースペック — 正直、5〜10個のサービスを動かすだけならDocker Composeで十分。
結論:k3sを自宅に導入するなら「学習目的」と割り切ろう。Docker Composeで困ってないなら無理に入れる必要はない。でも触っておくと世界が広がるのは確か。
参考:k3s公式