1. そもそも Docker + Kubernetes は「個人 botter」に最適か?
比較軸 | Docker 単体 / Docker Compose | 軽量 K8s(k3s / micro-k8s) | フル K8s(EKS / GKE / self-host) |
---|---|---|---|
起動まで | docker compose up だけ | 1 ノードで即起動 (k3sup , snap ) | クラスター構築~ネットワーク設計が必須 |
可用性 | restart policy, watchtower 程度 | Pod 自動再起動、Helm で複数 bot | HPA, ローリング更新、Secret 管理まで網羅 |
運用コスト | ほぼゼロ (自宅 PC / 安価 VPS) | VPS 1 台(月¥1–3k) | マネージド: 1 クラスタ ¥5–15k/月+ノード課金 |
学習コスト | 既に Docker を使うなら低 | 2–3 日で把握可能 | ネットワーク/RBAC など覚えることが急増 |
スケール制約 | bot 3–5 本で CPU ボトルネック | bot 10 本+Prom/Grafana でも余裕 | リージョン横断や GPU も自由 |
結論
- 当面 10 本以内 の bot を同サーバーで回すなら k3s 1 ノードクラスタ が最もコスパと可用性のバランスが良い。
- フル K8s は「昼夜 20 本以上・負荷分散・自動水平スケールが欲しい」段階で初めて ROI がプラスになる。
2. インフラ・パターン別シナリオ
パターン | 構成 | 月額目安 | 強み | 弱み |
---|---|---|---|---|
A. ローカル 2PC(開発/運用分離) | PC-① (開発) ➜ VSCode、Docker Desktop PC-② (運用) ➜ k3s + bot Stack | ¥0 | 低コスト、物理分離で安心 | 停電・回線断で即ダウン バックアップ自力 |
B. VPS 1 台 + CI/CD | Sakura VPS / ConoHa / Hetzner k3s + ArgoCD、Prometheus | ¥2k–4k | 24h 通信安定、IP ホワイトリスト可 | CPU/メモリ上限が早めにくる |
C. VPS 2 台 (冗長) | Bot 用 / モニタリング用 分散 | ¥4k–8k | Grafana・DB を分離し負荷緩和 | コスト 2×、管理 2× |
D. マネージド K8s | EKS / GKE / Civo | ¥8k–15k | HPA, IAM, Secret Manager | 小規模だとアンダー利用に |
私の状況(PC 2 台+費用抑制)なら ↓
推奨ルート: まず A → B の二段ロケット
1️⃣ 低性能 PC に k3s を入れ、helm upgrade
だけで bot を再デプロイできる形を固める。
2️⃣ 流量が増えたら同じ k3s マニフェストを 国内 VPS にそのまま載せ替え。コンテナレジストリは GH Packages で共通化。
3. 具体ステップ(90 日プラン)
週 | マイルストーン | 主要コマンド or ツール |
---|---|---|
1 | 開発 PC:docker compose で bot ×2 を並行稼働 | docker compose up -d bot-mm bot-fr |
2 | 運用 PC に k3s インストール | `curl -sfL https://get.k3s.io |
3 | Helm Chart 化 (charts/bot/ ) | helm create bot → values.yaml で env / secrets を外出し |
4 | GitHub Actions : Push → Helm upgrade | kubectl rollout restart deployment bot-mm |
6 | Prometheus + Grafana Stack を同ノードに | helm repo add prometheus-community ... |
8 | Netdata Cloud or Grafana Cloud 無料枠へ外出し | 軽量化&スマホ通知 |
10 | VPS (¥2k) を契約 → k3sup でジョイン | k3sup join --ip <vps-ip> |
12 | bot ロードを 70 % 超過したら HPA or 2 ノード化判断 | kubectl top pods → CPU/メモリ閾値を監視 |
4. コスト最適化 Tips
- ノードは 1 vCPU / 2 GB から
- MMbot ×2 + P&D bot ×1 程度なら余裕。
- ログは 7 日で Loki に圧縮 → S3/Wasabi
- Egress 圧縮でストレージ月¥100 未満。
- CI/CD ランナーは自宅 PC を使い、GitHub Hosted Runner の分を節約。
- Spot/VPS のミックス
- 定常 bot: VPS、検証 bot: AWS Spot →
terraform destroy
で即削除。
- 定常 bot: VPS、検証 bot: AWS Spot →
5. 運用 & 開発を同時に回すワークフロー
graph LR A[VSCode Devcontainer] -->|git push| B[GitHub] B --> C[CI lint & test] C -->|helm package| D[GH Container Registry] D -->|Flux/ArgoCD sync| E[k3s Cluster] E --> F[Prom & Grafana Cloud] subgraph Local A end subgraph Cloud / VPS E F end
- コード⇄実稼働 の往復を git push 1 回に統一。
- 開発 PC でフルテスト → 運用ノードは自動ローリング更新。
- 外部サーバーに切り替えても Flux/Argo の GitOps パターンを踏襲するので手順変更ゼロ。
最終ジャッジ
問い | 回答 |
---|---|
Docker + K8s は最適? | Yes, ただし k3s 1 ノードが現実的起点。 フル K8s は bot 数・負荷が倍増したら移行。 |
外部サーバーレンタルは妥当? | 妥当。 国内 VPS をミラー環境にして深夜回線断・停電リスクを回避。まずは月¥2–4k で十分。 |
2 台 PC の使い分け? | 開発:高性能 PC(VSCode Devcontainer) 運用:低性能 PC に k3s → 成熟後 VPS に置換 |
スタートはローコスト & シンプルに。
“k3s + GitOps” を骨格に据えておけば、bot 数が 3→10→30 と増えても マニフェスト再利用+ノード追加だけでスケールでき、開発スピードと運用安定の両方が犠牲にならない。