--- title: "Public Cloud Learning Sessions - EKS Optimization Part 1 of 3 - Compute Optimization with Karpenter" type: source tags: [AWS, EKS, Karpenter, Cost-Optimization, Kubernetes, Spot-Instance] date: 2026-04-14 --- ## Source File - [[Cloud & DevOps/Public-Cloud-Learning-Sessions/04_EKS/public-cloud-learning-sessions-eks-optimization-part-1-of-3-compute-optimization]] ## Summary(用中文描述) - 核心主题:AWS EKS 计算成本优化,聚焦 Karpenter 与 Cluster Autoscaler 的对比及 Karpenter 的核心能力 - 问题域:传统 Cluster Autoscaler 在 Kubernetes 节点自动伸缩方面的局限性(延迟高、集成浅、功能分散) - 方法/机制:Karpenter 直接与 EC2 Fleet API 通信,结合 Node Pools 和 Node Classes 实现智能工作负载放置与节点整合 - 结论/价值:Karpenter 将节点组管理、Spot 中断处理、AMI 生命周期管理整合为统一数据平面,大幅降低 EKS 计算成本和运维复杂度 ## Key Claims(用中文描述) - Karpenter 通过直接调用 EC2 Fleet API 降低节点供给延迟,相比 Cluster Autoscaler 减少调度等待时间 - Karpenter 原生集成 Kubernetes 调度约束(node selectors/affinity/taints/tolerations/topology spread),无需额外组件即可实现精细化工作负载放置 - Karpenter 内置 Spot 中断处理能力,通过 EventBridge + SQS 监听 spot interruption/instance rebalance/health events,无需单独部署 node termination handler - Karpenter 通过 Consolidation 策略自动整合低利用率节点,支持细粒度中断预算控制和峰值时段豁免 - Karpenter 支持 AMI 自动滚动升级,可从 Parameter Store 获取对应 EKS 控制面版本的最新优化 AMI,支持版本锁定和自定义 AMI ## Key Quotes > "Carpenter has native integration with Kubernetes and it complements the native Kubernetes spot pod scheduling constraints that is available for your workloads." — 强调 Karpenter 与原生 K8s Spot Pod Disruption Budget 的互补关系 > "Carpenter not only does the auto-scaling bit, but it also removes the pain points of working with node groups." — 核心价值:Karpenter 不仅做扩缩容,更消除了节点组管理的所有痛点 ## Key Concepts - [[Karpenter]]:AWS 开源的 Kubernetes 节点自动伸缩器,直接与 EC2 Fleet API 通信,实现智能节点供给与整合 - [[Node-Pool]]:Karpenter 的核心概念,定义调度约束和容量限制,控制哪些 Pod 可以调度到哪些节点 - [[Node-Class]]:Karpenter 的核心概念,定义实例配置细节(子网、节点角色、AMI),相当于实例模板 - [[Spot-Interruption-Handling]]:Karpenter 内置的 Spot 实例中断处理,通过 EventBridge + SQS 监听中断信号并自动驱逐 Pod - [[Consolidation]]:Karpenter 的节点整合策略,自动识别低利用率节点并将其 Pod 驱逐整合到更少节点 - [[AMI-Rolling-Upgrade]]:Karpenter 的 AMI 生命周期管理,支持从 Parameter Store 自动获取最新 EKS 优化 AMI 并滚动升级 - [[EC2-Fleet-API]]:Karpenter 直接调用的 AWS API,绕过 ASG 实现更快的节点供给 - [[Topology-Spread-Constraints]]:K8s 拓扑分布约束,Karpenter 支持基于可用区的 Pod 分布调度 ## Key Entities - [[Amazon EKS]]:托管 Kubernetes 服务,Karpenter 的运行平台 - [[AWS EC2]]:Karpenter 调度计算资源的目标平台 - [[Amazon EventBridge]]:Karpenter 监听 Spot 中断事件的 AWS 事件总线 - [[Amazon SQS]]:Karpenter 接收 Spot 中断通知的队列服务 - [[AWS Systems Manager Parameter Store]]:Karpenter 获取 EKS 优化 AMI 版本的配置存储服务 - [[Prometheus]]:Karpenter 发布指标的开源监控系统 - [[Cluster Autoscaler]]:Karpenter 的对标竞品,K8s 生态传统节点自动伸缩方案 ## Connections - [[Amazon EKS]] ← 平台 ← [[Karpenter]] - [[Cluster Autoscaler]] ← 替代升级 ← [[Karpenter]] - [[Spot-Interruption-Handling]] ← 依赖 ← [[Amazon EventBridge]] + [[Amazon SQS]] - [[AMI-Rolling-Upgrade]] ← 依赖 ← [[AWS Systems Manager Parameter Store]] - [[Consolidation]] ← 关联 ← [[Cost-Optimization]] - [[public-cloud-learning-sessions-eks-optimization-part-3-of-3-introduction-to-eks]] ← 系列后续 ← [[Karpenter]](Part 3 覆盖 EKS Auto Mode,内含 Karpenter Controller) - [[ctp-topic-70-eks-deployment-using-iac]] ← 关联 ← [[Amazon EKS]](部署方法) ## Contradictions - 与 [[ctp-topic-70-eks-deployment-using-iac]] 可能存在视角差异: - 冲突点:节点扩缩容方案选型 - 当前观点(Part 1):推荐 Karpenter,强调其原生集成和简化数据平面管理的能力 - 对方观点(Topic 70):重点介绍 Cluster Autoscaler 作为扩缩容方案 - 说明:两者并非互斥——Topic 70 聚焦 EKS IaC 部署流程中的 Cluster Autoscaler 集成;Part 1 聚焦计算优化专题,强调从 Cluster Autoscaler 迁移至 Karpenter 的收益。可并存作为迁移路径参考。