63 lines
4.9 KiB
Markdown
63 lines
4.9 KiB
Markdown
---
|
||
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 的收益。可并存作为迁移路径参考。
|