用途:Karpenter 是 Kubernetes 节点自动扩缩器,根据应用负载变化按聚合的 Pod 资源需求直接向云厂商 API 申请规格合适的计算节点,用于节点供给、Spot 实例管理、集群合理配置与成本优化。
主要能力:与 Cluster Autoscaler 依赖预定义节点组不同,Karpenter 直接调用云厂商 API,无需节点组;扩容速度快(秒级);可自动从所有可用实例类型中选择;支持整合(Consolidation),主动用更便宜的节点替换现有节点;对 Spot 实例提供一等支持并自动回退到按需实例。
使用方式:安装 Karpenter 控制器,配置云厂商凭证(如 IAM 角色)、实例配置文件与安全组;为不同工作负载创建 NodePool,并定义 EC2NodeClass(AWS)或对应提供商的配置;在 NodePool 中通过 requirements 约束架构、实例族、实例大小、容量类型(spot/on-demand)和可用区;配置 disruption 的 consolidationPolicy(WhenUnderutilized 或 WhenEmpty)、consolidateAfter、expireAfter 与 budgets 控制中断速率;Pod 需设置准确的资源 requests,并可配合 tolerations、nodeSelector、affinity 与 topologySpreadConstraints 调度。
适用场景:资源需求多样、需要亚分钟级扩容、希望用 Spot 与 Graviton(ARM64)降低成本、需要整合以减少浪费、负载不可预测或突发、需要自动管理混合容量类型(Spot/按需)的集群。
限制与注意事项:Karpenter 依赖准确的 Pod 资源 requests;Spot 实例可能被中断,需配置 Pod Disruption Budgets、preStop 钩子与优雅终止;整合与中断受 disruption budgets 约束,需按业务窗口调整;不同云厂商的 NodeClass 配置不同。资料未提供具体收费、价格与平台支持范围。