Amazon Web Services(AWS) 发布开源 Kubernetes 集群自动扩展工具 Karpenter 的 1.0 版本。这标志着 Karpenter 已经完成 Beta 测试。该版本带来了稳定的 API 和多项新特性。
Karpenter 最初于 2021 年 11 月推出,现已经发展成为一个全面的 Kubernetes-native 节点生命周期管理器。正如我们今年早些时候报道的那样,这个项目在 Slack 等行业领导者中越来越受欢迎,并已成为 GitHub 上十大最受欢迎的 AWS 开源项目之一。
在 Infracloud 的一篇文章中,Himanshu Verma 解释了 Karpenter 如何消除了预配置节点组和调整资源大小的需求,并直接使用 Launch Templates 来管理实例。Karpenter 根据需要自动提供新节点,实时响应 Unschedulable pod。它可以动态调整集群计算容量,优化性能和成本效益。
1.0 版本修复了许多 Bug,并带来了多项新特性。Karpenter 1.0 的主要特性包括:
增强中断控制: 用户现在可以按原因设置中断预算,以便对节点中断进行细粒度控制,以应对利用率不足、空闲或漂移等情况。
重命名合并策略: 为清楚起见,“WhenUnderutilized”策略已被重命名为“WhenEmptyOrUnderutilized”。
新增合并控制: 在添加或删除 pod 时,“consolidateAfter”参数允许用户指定 Karpenter 在合并节点之前等待多长时间。
终止宽限期: 新增的“terminationGracePeriod”设置使集群管理员对节点生存期和优雅终止有了更多控制。
漂移特性升级: 漂移特性,即替换偏离期望状态的节点,现在默认启用。
AMI 选择更改:“amiSelectorTerms”字段现在是必需的,并且新增的“alias”术语使用户可以选择 Amazon EKS-optimized AMI 的特定版本。
实例元数据服务(IMDS)访问限制: 为了提高安全性,默认禁止 pod 对 IMDS 的访问。
Kubelet 配置位置更改:Kubelet 设置改到了 EC2NodeClass API 中。
NodeClaims 不可变:NodeClaims 在创建后不能再修改,从而保证与预期的行为一致。
NodePool nodeClassRef 更改: 所有的 nodeClassRef 字段现在都是必需的,“apiVersion”字段被重命名为“group”。
指标更改: 修改了几个 Prometheus 指标,这可能需要用户更新他们的仪表板。
该版本还包括一些计划中的弃用,包括删除某些注解和基于 ConfigMap 的配置。
对于希望从 Beta 版升级的用户,AWS 提供了一个使用 Kubernetes webhook 转换的迁移路径,前提是用户已经使用了包含最新 API 的版本。该过程可以就地升级 API 而不需要替换节点。但是,建议用户在进行升级之前查看完整的迁移文档,并在非生产环境中测试升级过程。
在 X(以前的 Twitter)上的一段演练视频中,Olalekan Taofeek 详细解释了他是如何将 Karpenter 从 0.37 升级到 1.0 的——这个版本差异比迁移路径提供的版本差异更大。他强调,有几个破坏性的变化需要特别注意:
用户数据不再用于 Kubernetes 配置。
节点池 / 组配置更改——API 版本和字段名称发生了变化,用户需要更新配置。
新增一个“启动时间”字段,需要用户在自己的工作负载中加以考虑。
将一些字段从节点池移到了节点类配置中。
Karpenter 1.0 发布的消息大受欢迎,例如 Vatsal Bajpai 在 X(以前的 Twitter)上写道:
“在云上,Karpenter 已经成为 k8s 的必需品,真让人高兴!”
在 Reddit 上的一个帖子中,用户普遍对这个版本赞赏有加。有人指出,Azure 上已经有可用的移植版本,但令人遗憾的是,GCP 上没有。其他人则在考虑,Karpenter 的功能是否可以完全集成到 EKS 的控制平面中。
用户可以通过 Kubernetes Slack #karpenter 频道或 GitHub 了解更多信息或提供反馈。
查看原文链接:
https://www.infoq.com/news/2024/09/karpenter-10/
评论