おうち 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-dashboardapply し、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 等で前面プロセスを常駐させる。

何を載せるか

関連