
2026/05/30 2:06
Kubernetes のコスト見積もりと CUR/FOCUS 請求データを照合する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
サマリー:
burn は、外部エージェントや複雑な YAML 設定を必要とせず、直ちにクラウド支出の可視性を提供することを目的としたゼロセットアップの Kubernetes コスト分析ツールです。Homebrew、バイナリ、Docker、Helm、または Go を介して利用可能であり、AWS、Azure、Google Cloud およびオンプレミス環境(GPU クラスターを含む)すべてで完全にカバーされます。本ツールは、スポットインスタンスやロードバランサーのような重要なリソースを賢く検出することで、追跡のギャップを防ぎます。
そのプライシングエンジンは、認証情報が利用可能な場合にリアルタイムクラウド API を最優先し、欠落している場合は 600 ア上の AWS インスタンスタイプおよび 300 ア上の Azure インスタンスタイプを格納した埋め込みデータベースにフォールバックします。さらに、未知のタイプについては静的なフォールバックレートを適用します。これにより、基本分析のために完全な認証を行わなくても、計算資源、ストレージ、ネットワーク支出のコストを正確に計算することが保証されます。
実行可能なインサイトを提供するため、
burn は時間帯に応じた分析(例:週間平均)をサポートし、Slack と /burn スラッシュコマンドを介して統合されます。Anthropic API キーを有する場合は、非効率なイングレスロードバランサーや過剰プロビジョニングされた CPU リクエストのような廃棄物を特定する AI 駆動の自然言語レポートを提供し、CPU リミットの削減や LB タイプの変更など、特定のコマンド(例:kubectl scale deployment...)を提案してコストを節約することをしばしば示します。組織は、Helm CronJob を展開することでこれらのインサイトを自動化し、週次報告を行うことができます。Apache 2.0 ライセンスの下で提供され、本ツールはユーザーがオンプレミスクラスターのためにカスタムプライシングレートを設定可能にするとともに、オペレーショナルオーバーヘッドなしにインフラ Bills の包括的な内訳を提供します。本文
Kubernetes クラスタのコスト最適化ツール Burn
Burn は、Kubernetes クラスタの資金燃費を可視化するツールです。エージェントのインストール、ダッシュボードの維持、YAML の設定は一切不要で、設置して即座に実行できます。
採用の理由 (Why Burn?)
以下の特性により、クラウドコストの可視化と最適化をシンプルに実現します。
- ゼロセットアップ: Homebrew で 1 コマンドの実行だけで利用可能。エージェントや設定ファイルは不要です。
- 完全なコスト把握: 仮想マシン、ストレージ、ロードバランサー、GPU のコストをリアルタイムのクラウド基準で把握できます。
- AI 搭載機能: エンゲジされた英語での質問に対し、コピー&ペースト可能な
コマンドを返します。kubectl - Slack ネイティブ:
と入力するだけでレポート表示。/burn
で AI による詳細分析も可能です。/burn ask "..." - マルチクラウド対応: AWS EKS、Azure AKS、GCP GKE およびオンプレミス環境に対応しています。
- スポット (Spot) インスタンス最適化: リアルタイムの割引率と中断確率に基づき、どのワークロードを Spot へ移行すべきかを特定します。
- ロードバランサー検出:
およびService
の両方からロードバランサーを検出し、ホスト名の重複を防ぎます。Ingress - タイムアウェア計算: スナップショットではなく、
を指定することで週平均を正確に計算します。--period 7d
インストール方法
環境に合わせて以下のいずれかの方法でインストールしてください。
Homebrew (推奨)
brew install tanrikuluozlem/burn/burn # バージョンアップ時は以下を実行 brew upgrade tanrikuluozlem/burn/burn
バイナリ (手動インストール)
VERSION=$(curl -s https://api.github.com/repos/tanrikuluozlem/burn/releases/latest | grep tag_name | cut -d'"' -f4 | tr -d 'v') && \ curl -L "https://github.com/tanrikuluozlem/burn/releases/latest/download/burn_${VERSION}_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz
Docker
docker pull ghcr.io/tanrikuluozlem/burn:latest
Helm
git clone https://github.com/tanrikuluozlem/burn.git helm install burn ./burn/charts/burn
Go (ソースからビルド)
go install github.com/tanrikuluozlem/burn/cmd/burn@latest
※ macOS 向け: Gatekeeper の警告が表示された場合は、以下を実行して解除してください。
sudo xattr -d com.apple.quarantine $(which burn)
クイックスタート
プロメス (Prometheus) との連携でコスト分析を開始します。
基本的なコマンド例
| コマンド | 説明 |
|---|---|
| プロメスなしでのコスト詳細内訳取得 |
| プロメス連携での分析 |
| 7 日間の平均値を計算 |
| 特定の名前空間 () の詳細分析 |
| スポットインスタンス移行可能性の確認 |
AI アナリティクスと推奨アクション
クラスター全体の無駄や、特定の namespace に対する推奨アクションを取得します。
# 7 日間平均と AI 分析 burn analyze --prometheus http://prometheus:9090 --period 7d --ai # 特定の namespace 限定 burn analyze --prometheus http://prometheus:9090 --namespace app-backend --ai # 直接質問形式 burn ask --prometheus http://prometheus:9090 "argocd はなぜこんなに高価なのか?"
AI の出力例と自動生成される kubectl
コマンド
kubectlAI は以下のような詳細なレポートと、コスト削減のための具体的なコマンドを返します。
- リソース過剰プロビジョニング: p95 使用率に基づき CPU/メモリリクエスト量の再調整提案。
- ロードバランサー最適化: 内部通信のみ利用される Service を
に切り替える提案。ClusterIP - VPA 推奨: Vertical Pod Autoscaler の有効化による過剰プロビジョニングの防止。
スポット (Spot) レディネス機能
各インスタンスタイプについて、リアルタイムのスポット割引率と中断確率を表示し、移行候補を特定します。
平易な英語での質問
AI 分析機能を有効化するには、以下の環境変数を設定する必要があります。
export ANTHROPIC_API_KEY="your_api_key_here"
Slack インテグレーション
Burn を Slack ボットとして実行し、チャート内でコスト報告を行うことができます。
実働方法
- サーバー起動:
burn serve --port 8080 --prometheus http://prometheus:9090 --period 7d - スラッシュコマンド: チャット内で
と入力するだけでコストレポートが表示されます。/burn - 高度な分析:
で AI に質問できます。/burn ask "..."
Slack 設定手順
- Slack Apps から新しい App を作成します。
- スラッシュコマンド
を追加し、サーバー URL +/burn
を指すように設定します。/slack - 以下の環境変数を設定します:
SLACK_SIGNING_SECRET
(AI 機能を有効化する場合)ANTHROPIC_API_KEY
- サーバーを公開します(テスト用には
、本番用にはロードバランサーなどを介します)。ngrok
コマンドリファレンス
| スラッシュコマンド | 得られる内容 |
|---|---|
| 完全なコストレポート(ノード、名前空間、アイドルコスト、ロードバランサー、ストレージ) |
| 特定の namespace 単位の Pod レベルの詳細内訳 |
| コマンド付きの AI 分析 |
オンプレミスおよび GPU クラスタ対応
Burn はオンプレミス環境や GPU クラスタでも動作します。独自の資源単価を設定して分析可能です。
burn analyze \ --cpu-price 0.05 \ # コアあたりの CPU コスト (1 時間) --ram-price 0.008 \ # GiB あたりのメモリ コスト (1 時間) --gpu-price 3.00 \ # GPU ユニットあたりのコスト (1 時間) --storage-price 0.10 # GiB あたりのストレージ コスト (1 ヶ月)
注: クラウドクラスタの場合、これらのフラグは指定せず、クラウド標準のリアルタイム価格が自動的に使用されます。
仕組み (アーキテクチャ)
Burn は以下のコンポーネントを読み取ってコストを計算・分析します。
- Kubernetes API: ノード、Pod、PVC、Service、Ingress の状態を取得。
- Prometheus: 実際の CPU およびメモリの使用量(オプション)を取得。
- Cloud Pricing: AWS、Azure、GCP のリアルタイム価格を参照。
- ↓
- Cost Engine: 計算リソース、ストレージ、ロードバランサー、GPU、アイドル状態の検出と集計。
- ↓
- 出力: CLI、Slack ボット、AI 推奨アクションへ提供。
価格情報源の優先度
- AWS/Azure プライシング API: クレデンシャルが存在する場合(リアルタイムかつリージョンに即した情報)。
- 組み込み価格データベース: クレデンシャルがない場合(600+ AWS、300+ Azure インスタンスタイプを週更新収録)。
- 静的フォールバック: インスタンスタイプが不明な場合(インスタンスファミリーに基づく見積もり)。
- ストレージおよびロードバランサーは、API が存在しない場合は静的フォールバック値を使用。
- GPU ノードは自動検出され、比率ベースのコスト分割により価格付けが行われます。
Kubernetes へのデプロイ
Helmチャートでのインストール
git clone https://github.com/tanrikuluozlem/burn.git helm install burn ./burn/charts/burn \ --set prometheus.url=http://prometheus:9090 \ --set schedule="0 9 * * 1-5"
CronJob (日次 Slack リポート用 YAML)
定期的なレポート生成と Slack 送信用の設定例です。
apiVersion: batch/v1 kind: CronJob metadata: name: burn-report spec: schedule: "0 9 * * 1-5" jobTemplate: spec: template: spec: containers: - name: burn image: ghcr.io/tanrikuluozlem/burn:latest args: - analyze - --prometheus=http://prometheus-server.monitoring:80 - --period=7d - --ai - --slack env: - name: ANTHROPIC_API_KEY valueFrom: secretKeyRef: name: burn-secrets key: anthropic-api-key - name: SLACK_WEBHOOK_URL valueFrom: secretKeyRef: name: burn-secrets key: slack-webhook-url restartPolicy: OnFailure
設定項目詳細
環境変数
| 変数名 | 説明 | 必要な場合 |
|---|---|---|
| Claude API キー (AI 機能用) | , , |
| Slack ウェブフック URL | |
| Slack App の署名シークレット | (ボットとして動作時) |
コマンドラインフラグ
| フラグ | 説明 | 使用対象 |
|---|---|---|
| オンプレミス時の CPU コスト (コア/1 時間) | オンプレミス |
| オンプレミス時のメモリ コスト (GiB/1 時間) | オンプレミス |
| オンプレミス時の GPU コスト (ユニット/1 時間) | オンプレミス |
| オンプレミス時のストレージ コスト (GiB/月) | オンプレミス |
| スポットインスタンス移行可能かの詳細表示 | 全環境 |
注: クラウドプロバイダーから価格情報を取得できないオンプレミス環境においてのみ、これらのフラグを使用します。
開発者向け
ビルドとテストの実行方法です。
make build # バイナリの構築 make test # テストの実行 make lint # リンターの実行
ライセンス
本ツールは Apache 2.0 ライセンスの下で提供されています。詳細は
LICENSE ファイルをご確認ください。