Skip to main content

Karpenterは使えない。K3sオンプレでノードオートスケーリングを選ぶ前に知るべき制約

Karpenterと聞いて、自分たちの環境にも入れられると思っていないか

Karpenterも、Cluster Autoscalerも、ノードを自動で増減させてくれる便利なツールだ。だがK3sでオンプレ・ベアメタル環境を運用しているなら、その比較記事をそのまま鵜呑みにしてはいけない。世の中に出回っている「Karpenter vs Cluster Autoscaler」の比較情報は、ほぼ例外なくAWS前提で書かれているからだ。

section01

本記事では、両ツールの基本的な違いを整理した上で、K3s・オンプレ・マネージドK3s環境でなぜこの比較がそのまま通用しないのかを明らかにし、現実的な選択肢を提示する。

Karpenter と Cluster Autoscaler、そもそも何が違うのか

Cluster Autoscalerは、事前に定義されたノードグループ(AWSならAuto Scaling Groupなど)を、スケジュール不可能なPodの検知に応じてスケールする仕組みだ。Kubernetes公式ドキュメントでも、Cluster AutoscalerとKarpenterは「SIG Autoscalingがスポンサーする2つのノードオートスケーラー」として並列に紹介されている。

section02

一方のKarpenterは、事前定義のノードグループを介さず、クラウドインスタンスを直接プロビジョニングする設計だ。Qoveryの比較記事では、Cluster Autoscalerは安定性重視の本番運用向き、Karpenterは迅速なプロビジョニングが求められるワークロードで有用だと整理されている。

K3sで小中規模クラスタを運用しているインフラエンジニアにとって、この「プロアクティブかリアクティブか」という違いは、スパイク時の対応速度に直結する重要な判断軸になる。

2026年の「公式な使い分け」はパブリッククラウド前提で書かれている

業界の比較記事を追うと、推奨はすべてクラウドプロバイダー単位で語られている。AWSやAzureであればKarpenterが第一候補、GKEではCluster Autoscalerが唯一の本番選択肢という構図だ。

section03

象徴的なのがAWSのEKS Auto Modeだ。AWS公式ドキュメントによれば、EKS Auto ModeはKarpenterのNodePool APIをそのまま踏襲しつつ、コントローラの運用をAWS側が完全に肩代わりする仕組みになっている。Azureも同様の動きを見せており、Microsoft Learnの公式ドキュメントでは、AKSのNode Auto-Provisioning(NAP)がオープンソースのKarpenterとAKS Karpenter providerをベースにしていると明記されている。

つまり「2026年のベストプラクティス」として語られる内容は、AWSかAzureのマネージドKubernetesに乗っていることが大前提になっている。K3sでオンプレ環境を運用しているエンジニアが同じ記事を読んでも、再現できる要素はほとんどない。

K3s・オンプレ・ベアメタルでは、この比較がそのまま通用しない

ここが本記事の核心だ。KarpenterもCluster Autoscalerも、「クラウドAPI経由でVMインスタンスを増減させる」ことを前提に設計されている。物理サーバーやオンプレ仮想化基盤の上で動くK3sクラスタには、この前提そのものが存在しない。

section04

Cluster Autoscalerの公式サポート対象は、GCE・GKE・AWS・Azureといった主要クラウドに限られる。それ以外の基盤ではCluster API プロバイダー経由の実装に委ねられており、ベアメタルを担うMetal3のような個別プロバイダーが、主要クラウドと同等の成熟度でオートスケーリングを実装しているとは限らない。オンプレのベアメタルK3sクラスタで標準的な手段としてすぐ使えるものではない、というのが実情だ。

Karpenterの側も事情は変わらない。CAST AIの分析記事では、Karpenterは「AWSで開発され、実質的にAWS上の本番ワークロードで動くもの」と位置付けられており、Azure・GCPへの対応はコミュニティ主導の周辺プロジェクトに依存している。K3sをオンプレで運用している時点で、Karpenterの恩恵を素のまま受けられる場面はほぼ存在しない。

この「クラウド前提のツールが自分たちの環境には刺さらない」というギャップこそ、K3sベースのマネージドサービスであるKuboが運用設計で埋めようとしている領域でもある。

オンプレK3sでノードオートスケーリングを実現する現実的な選択肢

では、オンプレK3sではノードオートスケーリングを諦めるしかないのか。そうではないが、どの道も相応の作り込みコストを伴う。

section05

一つの現実的な経路は、Rancherでプロビジョニングしたクラスタに対してCluster Autoscalerを連携させる方法だ。support.toolsの解説記事では、専用ネームスペースの作成からクラウド認証情報の設定、YAMLによるデプロイまでの手順が具体的に示されている。ただしこれはRancherの管理対象クラウド(クラウドプロバイダ)があることが前提で、純粋なベアメタルには直接適用しづらい。

もう一つは、k0rdentのような宣言的マルチクラスタ管理ツールを使う方法だ。CNCFブログの事例では、Proxmox上のK3sクラスタをGitOpsで宣言的に管理するアプローチが紹介されている。インフラ・コントロールプレーン・ブートストラップを分離して扱える反面、テンプレート設計そのものに相応の学習コストがかかる。

サードパーティの試みとしては、Karpenterのエンジンをベアメタルやハイブリッド環境まで拡張しようとするvClusterの「Auto Nodes」のような取り組みもある。いずれも「標準機能としてすぐ使える」段階には至っておらず、どの選択肢を取っても自前の運用設計が必要になるのが現実だ。

Rancher連携にせよk0rdentにせよ、テンプレート設計やYAML管理を自前で引き受ける前提に変わりはない。この部分をKubo CloudのAI-Driven Deploymentに任せ、Captain UIで可視化しながら運用するという選択肢も、同じRancher管理基盤を使う以上は比較検討する余地がある。

Karpenterにも見落とされがちな弱点がある

公平を期すために触れておきたいのは、Karpenterを使えるパブリッククラウド環境であっても、万能ではないという点だ。

section06

CAST AIの分析によれば、KarpenterはPodのリソースリクエストに忠実にノードを起動するため、リクエスト自体が過大であれば、クラスタ全体で平均69%ものCPUが過剰にプロビジョニングされる「ghost capacity」が発生するという。CloudBoltの実測事例でも、Podのリソースリクエストが実使用量の4〜8倍に膨らんでいたケースが報告されており、ノードレベルの最適化だけでは根本的なコスト問題は解決しないと指摘されている。

つまりKarpenterを導入しさえすれば自動的にコストが最適化される、という単純な話ではない。ノードオートスケーリングは、Pod単位のリソース設計とセットで初めて機能する仕組みだ。

まとめ:ノードオートスケーリングの運用コストをどう見積もるか

KarpenterもCluster Autoscalerも、クラウドAPIに乗っている前提で設計された優れたツールだ。しかしK3s・オンプレ・ベアメタル環境で同じ比較軸をそのまま持ち込もうとすると、どちらを選んでも「自前で作り込む運用コスト」という見えない負債にぶつかる。RancherやGitOpsベースの管理ツールで代替することはできても、それ自体が新たな運用対象になる。

Kubo はK3sベースのマネージドKubernetesとして、こうしたノードレベルの運用設計をAI-Driven Deploymentで肩代わりする選択肢を提供している。YAMLやオートスケーラー連携を手作業で組む代わりに、自然言語でのデプロイ指示からRancher管理基盤を活かした運用まで任せられる点は、オンプレ/ハイブリッド環境でのノードオートスケーリング設計に悩むインフラエンジニアにとって検討する価値がある。

データ主権やAir-Gapped環境が要件になる場合は、Kubo On-Premise であれば自社インフラ上でもフルマネージドなK8s運用を実現できる。ノードオートスケーリングの選定に時間をかける前に、そもそもその運用コストを誰が負うべきかを見直すことが、2026年のK3s運用における現実的な出発点になるはずだ。

まずは料金プランでEKS/AKSとのコスト差を確認し、自社環境でのノードオートスケーリング設計について相談したい場合はお問い合わせから気軽に連絡してほしい。

Related articles

← Back to all posts