31 lines
1.7 KiB
Markdown
31 lines
1.7 KiB
Markdown
---
|
||
title: "Karpenter"
|
||
type: concept
|
||
tags: [AWS, Kubernetes, EKS, autoscaling, node-provisioning]
|
||
last_updated: 2026-04-28
|
||
---
|
||
|
||
## Definition
|
||
|
||
Karpenter 是 AWS 开源的 Kubernetes 节点自动配置工具(Node Auto-Provisioner),通过动态创建最优实例类型来响应未调度 Pod 的资源需求,替代传统的 Cluster Autoscaler。相比 Cluster Autoscaler 基于节点组(Node Group)的扩缩容模式,Karpenter 直接与 EC2 API 交互,根据 Pod 规格(CPU/内存/GPU 需求)即时选择最合适的 EC2 实例类型,实现更快的扩容速度和更低的资源浪费。
|
||
|
||
## Key Mechanisms
|
||
|
||
- **即时节点供给**:监听未调度 Pod 事件,秒级启动新节点,无需等待节点组预配置
|
||
- **最佳实例选择**:根据 Pod 资源请求从 EC2 实例类型池中选择最优匹配
|
||
- **多样化实例类型**:支持多种 EC2 类型(CPU/GPU/Spot/On-Demand),灵活利用 Spot 实例节省成本
|
||
- **标签驱动配置**:通过 `NodeTemplate` 定义标签/要求,自动匹配特定 Pod 到特定节点
|
||
- **与 Cluster Autoscaler 的区别**:Cluster Autoscaler 依赖节点组规模调整,Karpenter 直接控制 EC2 实例创建,响应更快速灵活
|
||
|
||
## Relationship with Cluster Autoscaler
|
||
|
||
Karpenter 是 Cluster Autoscaler 的替代/演进方案:
|
||
- Cluster Autoscaler 通过调整节点组规模间接扩缩节点
|
||
- Karpenter 直接与 EC2 API 交互创建/终止节点,更快速灵活
|
||
- EKS Auto Mode(Part 3 of 3)已集成 Karpenter 作为 Carpenter Controller 组件
|
||
|
||
## Sources
|
||
- [[ctp-topic-70-eks-deployment-using-iac]]
|
||
- [[public-cloud-learning-sessions-eks-optimization-part-1-of-3-compute-optimization]]
|
||
- [[public-cloud-learning-sessions-eks-optimization-part-3-of-3-introduction-to-eks]]
|