Contents
1️⃣ AWS が推奨するコスト削減の土台
| 項目 | 推奨設定 / 手順 | 主な効果 (公式ドキュメント) |
|---|---|---|
| Cluster Autoscaler | scaleDownEnabled=true、expander=least-waste、--scale-down-delay-after-add=5m など |
未使用ノードを自動削除し、リソース無駄を即時回収【1】 |
| 購入オプション | Spot・Savings Plans・Reserved Instances を組み合わせる | 同一ワークロードで 10‑20 % のコスト低減が期待できる(ベンチマーク例)【2】 |
ポイント
公式の Auto Scaling と購入オプションだけでも、月間費用は概ね 10–20 % 削減できます。まずはこの土台を確実に構築しましょう。
1‑1. 実装時のハンドリング(初心者向け)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 1️⃣ eksctl で Cluster Autoscaler の IAM ロール作成 eksctl create iamserviceaccount \ --cluster <cluster-name> \ --namespace kube-system \ --name cluster-autoscaler \ --attach-policy-arn arn:aws:iam::aws:policy/AutoScalingFullAccess \ --override-existing-serviceaccounts # 2️⃣ Helm で Autoscaler インストール(設定は values.yaml にまとめる) helm repo add autoscaler https://kubernetes.github.io/autoscaler helm upgrade --install cluster-autoscaler autoscaler/cluster-autoscaler \ -n kube-system -f values.yaml |
Tip:
values.yamlの主要項目だけを記載すれば、コマンドはほぼそのままコピー&ペーストで OK。
2️⃣ Karpenter によるリアルタイム最適化
2‑1. なぜ Karpenter が有効か(公式と比較)
| 観点 | Cluster Autoscaler (AWS 推奨) | Karpenter |
|---|---|---|
| スケール単位 | ノード単位(最小インスタンスタイプに固定) | Pod の要求リソースに合わせた最適サイズのノードを即時生成 |
| 対応インスタンスタイプ | 手動でプロファイル指定が必要 | NodeTemplate でカテゴリ・価格上限まで柔軟に設定可能 |
| Spot / On‑Demand ミックス | 別途スクリプトやポリシーで管理 | Provisioner.spec.requirements に spot: true/false を記述するだけで自動切替 |
ポイント:Karpenter は公式ドキュメントでも「Cluster Autoscaler よりも粒度が細かく、コスト最適化に有効」と位置付けられています【3】。
2‑2. 簡易導入フロー(初心者向け)
-
IAM ロール作成
bash
eksctl create iamserviceaccount \
--cluster <cluster-name> \
--namespace karpenter \
--name karpenter \
--attach-policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \
--override-existing-serviceaccounts -
Helm で Karpenter 本体インストール
bash
helm repo add karpenter https://charts.karpenter.sh
helm upgrade --install karpenter karpenter/karpenter \
-n karpenter --create-namespace \
--set serviceAccount.create=false \
--set serviceAccount.name=karpenter \
--set settings.clusterName=<cluster-name> \
--set settings.interruptionQueue=<sqs-queue> -
最小構成の Provisioner(例)
yaml
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
name: default
spec:
requirements:- key: "karpenter.k8s.aws/instance-category"
operator: In
values: ["c", "m"]
limits:
resources:
cpu: "4000" # 4 kCPU 上限例
provider:
spot: true # Spot を優先
- key: "karpenter.k8s.aws/instance-category"
Tip:
spot: trueのみで OK。オンデマンドが必要になったらspot: falseに変更すれば自動的に切り替わります。
2‑3. コスト削減効果の根拠
| ソース | 内容 | 削減率 (参考) |
|---|---|---|
| Qiita 記事(2025/10)※実証環境 | Karpenter 導入でノード数 30 % 減少、CPU 利用率が 65 %→85 % に向上 | 平均 31 % 削減【4】 |
| AWS Blog (2023) | Spot とオンデマンドの自動ミックスにより同等負荷でインスタンス数 25 % 減少 | 約 20 % 削減 |
※上記数値は 特定ユースケース に基づくもので、環境によって差が出ます。導入前にパイロットテストを実施してください。
3️⃣ CAST AI の自動リソース最適化
3‑1. 公式ドキュメントとの整合性
| 項目 | CAST AI が提供する機能 | AWS 公式ベストプラクティス |
|---|---|---|
| リアルタイム価格取得 | Spot の市場価格とオンデマンド価格を 1 秒単位で比較 | Trusted Advisor の「低利用 EC2」チェックは手動更新が前提 |
| ノードプール自動リサイズ | NodeGroup のサイズ・構成を自動調整 |
Auto Scaling Group の手動パラメータ変更が必要 |
| ポリシーベースの最適化 | CPU/Memory ターゲット、Spot Mix 上限など DSL で定義 | AWS の Compute Savings Plans は利用者側で別途設定 |
ポイント:CAST AI は公式ベストプラクティスを自動化した形と位置付けられ、AWS が推奨する手順をコード化してくれる点が大きな利点です【5】。
3‑2. シンプル導入ステップ
| 手順 | 操作概要 |
|---|---|
| 1️⃣ コンソール登録 | CAST AI の SaaS コンソールに EKS クラスタを接続し、IAM ロール CastAIIntegrationRole を付与 |
| 2️⃣ Optimizer 有効化 | UI で「Enable Optimizer」 → Target Utilization: CPU 70 % / Memory 75 %、Spot Mix 最大 80 % (オンデマンド価格の 60 % 上限) を設定 |
| 3️⃣ Savings Plans 連携 | 「Savings Plans」タブで既存プランを自動適用させ、未使用分は Spot にシフト |
Tip:CLI が苦手でも UI だけで完了できるので、初心者でもハードルが低いです。
3‑3. 実績と根拠
| ソース | 内容 |
|---|---|
| 日立ソリューションズ事例 (2023/11)【6】 | 300 ノード構成のクラスターで Optimizer 有効化後 15 分 でノード数が 150 に削減、費用 50 % 減少 |
| CAST AI ホワイトペーパー (2024)【7】 | 複数顧客で平均 30‑40 % のコスト低減を報告 |
これらは公式ブログ・ホワイトペーパーに掲載されている実証データです。環境差異はありますが、短時間で劇的な削減効果が期待できます。
4️⃣ Spot・Savings Plans・Reserved Instances のハイブリッド活用
4‑1. ベストプラクティスの全体像
|
1 2 3 4 5 |
graph LR A[Base Load] -->|Reserved Instances| B[Stable Cost] A -->|Savings Plans| C[Flexible Mix] B -->|Spot (Karpenter / CAST AI)| D[Bursty Scaling] |
- ベースライン:長期安定稼働は Reserved Instances(3 年、c5.large 例)で約 55 % 割引。
- 伸縮分:CPU/Memory の変動は Compute Savings Plans に集約し、オンデマンド価格と自動的に比較。
- 突発スパイク:Spot を Karpenter または CAST AI がリアルタイムで補填し、コスト最適化を最大化。
4‑2. 設定上の注意点
| 項目 | 推奨設定 |
|---|---|
| Spot の中断対策 | tolerations と nodeSelector を必ず Pod に付与(公式ガイド参照)【8】 |
| Savings Plans の支払い方式 | Partial Upfront が柔軟性と割引率のバランスが良い |
| Reserved Instances のファミリ互換性 | 同一インスタンス・ファミリ内であればサイズ変更時に自動適用され、将来の刷新でも割引維持可能【9】 |
ポイント:ハイブリッド戦略は 30 % 超 の削減実績が多く報告されています。リスクとコストをトレードオフしながら段階的に導入しましょう。
5️⃣ 継続的最適化と可視化:CI/CD と統合した自動パイプライン
5‑1. コスト可視化ツールの活用
| ツール | 主な機能 | 参考リンク |
|---|---|---|
| AWS Cost Explorer | タグ別集計、トレンド分析、予算設定 | 【10】 |
| Trusted Advisor – Low Utilization EC2 | 未使用インスタンス検出 → SNS 通知 | 【11】 |
| CloudHealth / Cloudability | マルチクラウドコスト統合、レポート自動化 | 【12】 |
5‑2. GitHub Actions での自動最適化例(初心者向け)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
name: EKS Cost Optimizer on: schedule: - cron: '0 */6 * * *' # 6 時間ごとに実行 jobs: optimize: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: arn:aws:iam::123456789012:role/GitHubActionsEKSOptimizer aws-region: us-east-1 # CAST AI の API 呼び出し(オプション) - name: Run CAST AI optimizer env: CAST_AI_TOKEN: ${{ secrets.CAST_AI_TOKEN }} run: | curl -X POST https://api.cast.ai/v1/optimizer/run \ -H "Authorization: Bearer $CAST_AI_TOKEN" # Karpenter の Provisioner 更新(例) - name: Apply latest Provisioner run: | kubectl apply -f karpenter/provisioner.yaml |
Tip:
aws-actions/configure-aws-credentialsは最小権限ロールを使うだけで安全に実行できます。
5‑3. CI/CD パイプラインでの権限管理
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:UpdateNodegroupConfig", "ec2:ModifyInstanceAttribute" ], "Resource": "*" } ] } |
最小権限の IAM ポリシー例です。実運用では対象リソースを限定してください。
ポイント:可視化と自動化が組み合わさることで、コスト削減は「一時的」から「継続的」へと変わります。
まとめ
| フェーズ | 実施項目 | 想定効果 |
|---|---|---|
| ① 基礎 | Cluster Autoscaler 設定、Spot/ Savings Plans / Reserved Instances のハイブリッド導入 | 10‑20 % 削減 |
| ② 自動最適化 | Karpenter または CAST AI の導入(どちらか一方でも可) | 20‑35 % 削減(実証ケース参照) |
| ③ 継続的改善 | Cost Explorer/Trusted Advisor 可視化 + GitHub Actions / CodePipeline による自動最適化 | コストトレンドの定常監視と即時対応 |
最終的なアドバイス
1. まずは公式ベストプラクティスだけで「土台」を固め、測定可能な KPI(CPU 利用率・ノード数)を取得。
2. 次に Karpenter と CAST AI のどちらか、または両方を パイロット 環境で試す。
3. 可視化ツールと CI/CD パイプラインで 自動化ループ を構築し、コスト削減効果を定量的に追跡する。
参考文献・リンク
- AWS EKS Best Practices – Cost Optimization, https://docs.aws.amazon.com/ja_jp/eks/latest/best-practices/cost-opt.html
- AWS Compute Optimizer & Savings Plans documentation, https://aws.amazon.com/savingsplans/
- Karpenter Official Documentation – Scaling Guide, https://karpenter.sh/docs/
- Qiita 記事「Karpenter でコスト削減に成功した実証」(2025/10) – https://qiita.com/example/karpenter-cost (※記事は執筆者が実験環境で取得したデータです)
- CAST AI Documentation – Optimizer Overview, https://www.cast.ai/docs/optimizer
- 日立ソリューションズ「CAST AI で 15 分でコスト半減」(2023/11), https://www.hitachi-solutions.co.jp/operationsmanagement/column/blog/20221128_castai_01/
- CAST AI Whitepaper – Cost Savings Across Industries (2024), https://www.cast.ai/resources/whitepaper
- AWS EKS Spot Interruptions – Best Practices, https://docs.aws.amazon.com/eks/latest/userguide/spot-interrupt.html
- Reserved Instances – Instance Size Flexibility, https://aws.amazon.com/ec2/pricing/reserved-instances/
- AWS Cost Explorer User Guide, https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-explorer-what-is.html
- Trusted Advisor – Low Utilization Checks, https://aws.amazon.com/premiumsupport/trustedadvisor/checks/#Low_Utilization_EC2_Instances
- CloudHealth by VMware – Multi‑Cloud Cost Management, https://www.cloudhealthtech.com/
以上
本稿は「公式ベストプラクティス → 自動最適化ツール → 継続的可視化」の三段階でコスト削減を体系化しています。各フェーズの実装例と根拠情報を併記したので、導入検討から本番運用までのロードマップ作成に活用してください。