在最近的一篇Medium博客文章中,阿迪达斯的平台工程师Iya Lang揭示了该公司如何通过一系列策略将AWS上运行的Kubernetes集群成本最多降低了50%。这一举措对于应对云成本增加的挑战具有重要借鉴意义,根据CNCF的报告,49%的组织在引入Kubernetes后面临云成本的上升。
采用Karpenter优化EC2实例成本
阿迪达斯团队首先引入了AWS开发的Karpenter,这是一个动态的集群自动扩缩器。Karpenter根据Pod的实时调度需求调整EC2实例的数量,以确保在正确的时间提供正确的计算资源。通过启动必需的实例类型、移除低利用率节点以及利用成本效益更高的实例,Karpenter有效地优化了资源利用率。
利用垂直Pod自动扩缩器(VPA)提升效率
团队的第二步是通过自动创建VPA来提高资源利用率。在开发和staging集群中,所有工作负载都配置了VPA。通过Kyverno策略工具,团队能够自动为这些工作负载生成VPA,以确保资源的有效利用。Kyverno作为一个策略引擎,作为动态准入控制器在Kubernetes集群中运行,通过策略校验和变更来确保资源的合理配置。
设置VPA默认值确保稳定性
为了在未知应用负载情况下设定VPA,阿迪达斯团队决定只控制资源请求,以防止在高峰期出现服务中断。他们设置了非常低的最小值,并根据原始请求或限制设置最大值,以保持应用程序的稳定性。这一策略在开发和staging集群中使得CPU和内存使用率下降了30%。
利用kube-downscaler减少非办公时间的资源使用
此外,团队还利用kube-downscaler工具在非办公时间调整副本数量,以减少碳排放并节省开支。此工具允许针对特定应用进行定制,以实现资源使用的智能化管理。
解决节点利用率问题
为了解决节点利用率不足的问题,阿迪达斯团队实施了Kyverno策略,防止有问题的Pod Disruption Budget(PDB)配置阻碍节点移除。同时,他们还制定了清理策略,定期清除无效的PDB。
这些成本优化措施首先在非生产集群中实施,并在所有环境中应用了PDB策略,显著降低了开发和staging集群的月度成本。阿迪达斯的成功经验为其他组织提供了一条高效控制Kubernetes成本的路径。
【source】https://mp.weixin.qq.com/s/6eRiaj6ihDbGZ9FXcwXbhw
Views: 2