Karpenter 是一款高性能、灵活的开源 Kubernetes 集群自动扩展工具,目前已支持 AWS 和阿里云。它可以根据不断变化的应用负载,快速启动大小符合的计算资源,进而提升应用的可用性。
相较于 Cluster Autoscaler,Karpenter 的灵活、易用、细粒度控制和高度自动化是一项重大升级,可帮助您更快速地调解资源、高效扩展和持续优化。
今年年中,Karpenter 发布了 1.0 版本,意味着该项目已 GA。因此现在是一个采用 Karpenter 的绝佳时机。
均匀仅需 20 分钟即可完成迁徙
通过 EKS 托管的节点组和 Fargate 迁徙至 Karpenter 十分简单,并且由于它与现有的 Kubernetes 集群兼容,并能利用标准的 Kubernetes 资源,因此可将停止降至最低。
关于迁徙的细节,我们将在后续的文章中具体阐明。欢迎关注「CloudPilot AI」。
Karpenter 设置的最佳实践
CloudPilot AI 构建在 Karpenter 之上,研发团队的核心成员是 Karpenter 项目的首批开发者,因此我们对 Karpenter 颇为了解。以下是关于 Karpenter 设置的最佳实践:
使用 Fargate 或专门的节点组
在 EKS Fargate 或专门的节点组上运行 Karpenter 控制器可以制止管理辩论和资源竞争。假如控制器运行在它所管理的节点上,可能会不小心缩减这些节点,从而导致系统不稳定。通过使用 EKS Fargate,控制器与托管节点保持独立,确保了稳定的可用性和性能。另一种选择是使用专用节点组,将控制器与应用程序工作负载隔离,进一步防止资源竞争,从而提高可靠性。
使用 Pod 停止预算(PDB)
Karpenter 会在其正常操作过程中请求调度器销毁节点。确保服务可靠性的唯一方法是向调度器告知每个 Deployment 或 StatefulSet 的需求。
停止预算对于在更新或扩展操作期间维持应用程序可用性至关告急,它通过限制任何时刻可以停止的 pod 数量来实现。这有助于通过制止同时终止过多 pod 来防止服务停机。别的,停止预算帮助均衡运维和稳定性,确保在进行须要更新的同时,至少有部分 pod 继续运行,从而确保 Kubernetes 环境的可靠性和稳定性。
制止使用自界说启动模板
Karpenter 的指导手册发起制止使用自界说启动模板,因为它们不支持节点的自动升级、跨架构支持或安全组发现。
与其使用启动模板,您可以在 AWS 节点模板中使用自界说用户数据,或者直接添加自界说 AMI。
在节点池中设置节点过期
使用 Karpenter,您可以设置在指定时间后自动使节点过期,而不会导致任何停机。这样可以确保全部节点始终运行最新的安全补丁,提升系统的安全性和稳定性。
根据工作负载范例设置节点池
有状态工作负载对节点变动的容忍度较低,因此发起为这类工作负载设置仅使用按需实例的设置器。而对于无状态且容错性强的工作负载,可以设置一个仅使用 Spot 实例的节点池。
为 GPU 工作负载或通用计算创建特定的节点池
为 GPU 工作负载或通用计算创建专门的节点池,可以更好地分配和优化资源。对于 GPU 密集型任务,设置了 GPU 实例的节点池可以确保这些专用资源的可用性和高效利用。
有趣的是,GPU 实例有时比通用计算实例更自制。这种本钱优势意味着,只要正确设置节点池和工作负载,您也可以将 GPU 实例用于通例工作负载。这样的灵活性不仅能低落本钱,还能确保工作负载与适当的硬件匹配,制止资源竞争,并通过为不同范例的工作负载提供独立的扩展策略和设置,简化管理。
为您的 Deployment/Pod 指定资源
Karpenter 会根据 Pod 的资源请求进行计算,因此必须为 Deployment/Pod 指定资源。假如不指定资源,可能会导致集群扩展时出现题目。
将 Pod 分布在多个节点和可用区
将 Pod 分布在多个节点和可用区可以增强 Kubernetes 应用的韧性和可用性。通过分散 Pod 的位置,可以最小化单点故障对服务的影响,因为假如某个节点或可用区出现故障,工作负载仍可以在其他节点或可用区继续运行。
Karpenter 通过动态地在不同的可用区设置节点来自动化这种分布,确保负载均衡和资源使用的优化。通过联合 Pod 拓扑约束,Karpenter 确保 Pod 按照指定规则进行摆设,制止资源争抢,提升性能和可靠性,纵然在节点或可用区发生故障时,也能保持服务不停止。
优先使用 Savings Plans 或预留实例
通过为特定的节点池设置较高的权重并设置实例限制,Karpenter 可以在切换到按需实例或其他实例范例之前,优先使用这些更具本钱效益的资源。这种策略帮助您最大化预留容量并节省本钱,同时保持扩展的灵活性。
在按需实例和 Spot 实例之间进行分配
此设置答应您创建一个混合实例设置,其中一定比例的 EKS 节点使用按需实例,其余部分使用 Spot 实例。这种设置非常适合那些能容忍停止并且能够从 Spot 实例的本钱优势中受益的工作负载。
实现这一设置的方法是,您为 Spot 实例和按需实例分别创建节点池,并为一个名为 capacity-spread 的新标签分配不同的值。然后,通过设置该标签的值来设置比例。假如您希望按 20/80 的比例分配,可以为 Spot 节点池设置值 [“2”、“3”、“4”、“5”],而为按需节点池设置值 [“1”]。
在停止(合并)过程中保护批处理任务
此功能是为了保护长时间运行的批处理作业,防止它们在 Karpenter 管理的节点合并过程中被停止。合并(Consolidation)是 Karpenter 识别低利用率节点并将其移除或更换,以低落集群本钱的过程。然而,这一过程可能会停止正在运行的 Pod,包括关键的批处理任务。
通过使用 karpenter.sh/do-not-disrupt: “true” 注解,您可以保护这些 Pod 免受迁徙或停止,直到它们的任务完成,确保它们顺利实行并完成。
或者,您也可以设置 disruption 字段,将 consolidationPolicy 与 consolidateAfter 联合使用。
通过设置 disruption,您可以告诉 Karpenter 哪些范例的节点须要考虑合并。您还可以通过设置字符串值“Never”完全禁用合并。
高级最佳实践
使用 Drift 更新节点
Karpenter 的 “drift” 机制会在节点的设置与 NodePool 或 nodeClassRef 中的期望状态不匹配时,将节点标记为“Drift”。漂移可能由多种原因引起,例如 NodePool 设置的变化或基础办法更新(如 AMI 版本变更)。通过使用 Karpenter 的漂移功能,用户可以高效地管理工作节点的升级,确保它们与最新的控制平面版本和基础办法保持一致。
通过自界说用户数据自动化设置节点
通过在 EC2NodeClass 中使用 userData 字段,用户可以在启动工作节点时自动实行额外的设置,而无需偏离标准的 AWS EKS 优化 AMI。这些设置任务包括修改 Kubernetes 设置、挂载卷或运行特定的启动脚本等。
提前超配容量以提高响应速度
这种策略旨在通过预先超配额外的计算资源,确保在须要时能够立即得到计算本领。这对于那些您预知将须要同时启动大量 Pod 的场景尤为有用,比如处理数据流水线。通过提前超配容量,您可以显著减少工作负载启动所需的时间,从而提高整体响应速度和性能。
对于关键生产环境,公道的超配比例可能在 10-20% 之间。
CloudPilot AI 助您轻松使用 Karpenter
CloudPilot AI 基于 Karpenter 构建,在 Karpenter 现有特性的基础之上优化用户的使用体验,包括:
1、简化安装摆设流程
对于普通用户来说,安装摆设 Karpenter 须要 1~2 周 的时间,并且须要工程师手动运维。而 CloudPilot AI 仅需5分钟 即可完成安装摆设,而且全托管服务,无需运维。
别的,当 Karpenter 推出新版本时,CloudPilot AI 可以帮助用户自动、丝滑升级。升级时间可从数天缩短至几小时。
2、Spot 实例智能运维:提前120分钟猜测停止、自动回退
使用 Karpenter 的大部分用户都会用到 Spot 实例来低落云本钱。但 Spot 实例的停止变乱常让工程师措手不及。Karpenter 本身不具备猜测停止的本领,只有接到停止通知后才开始处理节点。对于大规模集群而言,风险极大。
CloudPilot AI 通过机器学习算法可以猜测超过7500个实例的停止变乱,并且提前 120 分钟通知用户。并且还能将相应的应用自动迁徙到停止率更低、更稳定的实例上。保障服务稳定性,同时解放运维团队的时间。
3、更智能的节点选型
Karpenter 仅能根据代价因素选择节点,因此有可能选出代价差异不大,但性能差异巨大的节点,终极导致本钱只有微小的下降,但性能却发生巨大的消耗。
CloudPilot AI 在此基础上对节点选择功能进行智能化升级。在选取实例的过程中,除了代价因素外,还将网络带宽、磁盘 I/O、芯片范例等因素纳入考虑范围内,通过智能算法选出分身本钱和性能的实例范例,以减少资源浪费,增强应用稳定性。
推荐阅读
告别云本钱烦恼!Spot Insights 上线啦
服务600+客户的3D生成AIGC公司如何实现GPU本钱低落70%?
基于KEDA和Karpenter的K8s弹性伸缩实践方案
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |