Karpenter かーぺんたー
簡単に言うとこんな感じ!
Kubernetesのクラスターに「サーバーが足りない!」という状況が起きたとき、必要なサーバーをすぐに自動で用意してくれる賢い調達係だよ。しかも「この荷物なら軽トラがベスト」みたいに、ワークロードに合ったサーバータイプをAIみたいに選んでコストも最適化してくれるんだ!
Karpenterとは
Karpenterは、Kubernetesクラスター上で動作するオープンソースのノード自動プロビジョニングツールです。「ノード」とはKubernetesがアプリを動かすための仮想サーバーのことで、Karpenterはそのノードの追加・削除を自動的かつ賢く行います。2021年にAWSが中心となって開発し、現在はCNCF(Cloud Native Computing Foundation)のプロジェクトとして広く普及しています。
従来のKubernetes標準のオートスケーラーであるCluster Autoscaler(CA)と比べて、Karpenterはより高速・柔軟・コスト効率の高いアプローチをとっています。Cluster Autoscalerがあらかじめ定義された「ノードグループ」の中でしかスケールできないのに対し、Karpenterはワークロードの要件を直接見て最適なインスタンスタイプを動的に選択できます。
実務上は、突発的なアクセス増加・バッチ処理・機械学習ジョブなど、需要が読みにくいシステムで特に威力を発揮します。必要なときだけサーバーを用意して不要になったらすぐ返す、という動きが非常に速く、クラウドコストの削減にも直結します。
Karpenterの仕組みと構造
Karpenterは大きく2つのリソース定義(CRD)を軸に動作します。
| リソース | 役割 |
|---|---|
| NodePool | どんなノード(インスタンスタイプ・OS・ゾーンなど)を用意してよいかのポリシー定義 |
| NodeClass | クラウドプロバイダー固有の設定(AMI・サブネット・セキュリティグループなど) |
Karpenterの動作フロー
Podがスケジュール不能(Pending)になる
↓
Karpenterがそのアプリの「必要スペック」を読み取る
↓
NodePool・NodeClassのルールに従い最適なインスタンスタイプを選ぶ
↓
クラウドAPIを直接叩いてノードを起動(数十秒〜数分)
↓
PodがそのノードにScheduleされ起動する
↓
不要になったらノードを自動で削除(Consolidation機能)
Consolidation(統合)機能
Karpenterの強力な機能の一つがConsolidation(コンソリデーション)です。
複数のノードにバラバラに乗っているPodをまとめて少数のノードに詰め込み直し、空いたノードを削除することでコストを自動で最小化します。
| 機能 | 説明 |
|---|---|
| WhenUnderutilized | 使用率が低いノードを統合して削除 |
| WhenEmpty | Podがいなくなったノードをすぐに削除 |
覚え方
「大工(Carpenter)が現場に合わせた足場をすぐ組んで、仕事が終わったら即撤収する」
Karpenterの “K” はKubernetesの “K” 。現場(クラスター)に合わせた足場(ノード)を動的に組み立てるイメージで覚えよう!
歴史と背景
- 2014年 — Kubernetesが公開され、コンテナオーケストレーションが広まり始める
- 2016年頃 — Cluster Autoscaler(CA)が登場。ノードグループ単位でのスケーリングが可能になるが、柔軟性に限界があった
- 2021年11月 — AWSがKarpenter v0.5をオープンソースとして公開。re:Invent 2021で大きく注目される
- 2022年 — AWSのEKS(Elastic Kubernetes Service)でKarpenterが推奨のオートスケーラーとして採用が広まる
- 2023年3月 — CNCF(Cloud Native Computing Foundation)のSandboxプロジェクトとして採択。AWS以外のクラウド(Azure・GCPなど)への対応も進む
- 2024年 — v1.0リリース。本番利用に十分な安定性が認められ、エンタープライズ採用が急増
Karpenter vs Cluster Autoscaler 比較
KarpenterとCluster Autoscalerは同じ「ノードを増やす」仕事をしますが、アプローチが大きく異なります。
使い分けの目安
| シナリオ | 推奨 |
|---|---|
| コスト最適化・スポット活用を重視したい | Karpenter |
| 需要が急変するバッチ・ML処理がある | Karpenter |
| すでにCluster Autoscalerが安定稼働している | CA継続も選択肢 |
| マルチクラウド・オンプレミス環境 | CA(対応範囲が広い) |
関連する規格・RFC
| 規格・仕様 | 内容 |
|---|---|
| Kubernetes CRD(Custom Resource Definition) | KarpenterのNodePool・NodeClassはCRDとして定義される |
| CNCF Sandbox Project | 2023年よりCNCFが管理するオープンソースプロジェクト |
| AWS EC2 Fleet API | KarpenterがAWS上でインスタンスを起動する際に内部的に使用 |
| OpenTelemetry | Karpenterのメトリクス・トレース出力に対応 |
関連用語
- Kubernetes — コンテナアプリを自動で管理・運用するオーケストレーションプラットフォーム
- ノード(Node) — Kubernetesでアプリが実際に動く仮想・物理サーバーの単位
- Pod — Kubernetesにおけるコンテナの最小デプロイ単位
- Cluster Autoscaler — Kubernetesの従来型ノード自動スケーリングツール
- EKS(Elastic Kubernetes Service) — AWSが提供するマネージドKubernetesサービス
- スポットインスタンス — クラウドの余剰リソースを安価に使える割引インスタンス