おうち Kubernetes (ホームラボ)
自宅のミニ PC 等で仮想化基盤と Kubernetes クラスタを構築し、自前で OSS やサービスをホスティングする取り組み。学習目的とクラウド費用の節約を兼ねる。_moc-web-infra
ハードウェアと仮想化層
- 安価なミニ PC(例: N100 8GB/512GB を 18k 円)を母艦にする。
- Proxmox VE をベアメタルにインストールし、Type-1 ハイパーバイザとして VM を切る。
- インストールメディアは
dd bs=1M conv=fdatasync if=proxmox.iso of=/dev/sda。 - ネットワークは物理 NIC (
enp3s0) を Linux bridge (vmbr0) に紐付け、VM がここを通じて LAN に出る。Web UI は:8006。
- インストールメディアは
クラスタ構築
- Proxmox 上に複数 VM を立て、kubeadm でコントロールプレーン + ワーカーのクラスタを組む(典型的な「おうち k8s」手順)。
- Dashboard:
kubernetes-dashboardをapplyし、admin-userの ServiceAccount にcluster-adminを ClusterRoleBinding。トークンでkubectl proxy経由ログイン。
自宅ならではのハマりどころ
type: LoadBalancerが使えない: マネージドクラウドと違いクラウドプロバイダ統合が無いため、External IP が<pending>のまま固まる。- 対処: MetalLB(L2/BGP で LAN の IP を払い出す)を入れるか、Ingress Controller (ingress-nginx / traefik) + NodePort でルーティングする。
- DNS/ホスト名解決: Pod の
/etc/hostsには自分しか載らないので、サービスディスカバリは k8s Service / CoreDNS に寄せる。 - イメージ配布: 自前の Docker Hub リポジトリに push し、
kubectl rollout restart deployで再デプロイ。1 分程度で Pod が入れ替わる。 - Pod が Restart を繰り返す典型原因: メインプロセスが即終了する(daemon 起動など)。
sleep infinity等で前面プロセスを常駐させる。
何を載せるか
- Antikythera (Elixir PaaS) のような BEAM 分散クラスタ、自前 Web アプリ、langfuse や監視基盤など。