内容提要
Adidas通过降低EC2实例成本和自动化创建Vertical Pod Autoscalers(VPAs)等措施,将在AWS上运行的Kubernetes集群成本降低了50%。他们还设置了默认的VPA值,并利用kube-downscaler在非办公时间缩减资源。团队实施了Kyverno策略来防止问题Pod Disruption Budget(PDB)配置,并实现了开发和暂存集群月度成本的50%降低。他们强调了确保足够的节点容量,设置适当的VPA配置,向用户通知变更以及保持全面监控的重要性。成本优化是一个持续进行的过程。
延伸解读
Karpenter 在成本优化中的角色
阿迪达斯使用 Karpenter 动态调整节点数量,根据实时 Pod 调度需求供应 EC2 实例,并利用 Spot 实例进一步降低成本。Karpenter 能识别并移除未充分利用的节点,用更经济的实例替换昂贵实例,从而优化资源利用率。但需注意,Karpenter 目前仅支持 AWS,其他云平台用户需等待后续支持。
自动创建 VPA 的策略与工具
团队利用 Kyverno 策略引擎自动为开发和暂存集群的所有工作负载创建 VPA。Kyverno 作为动态准入控制器,可检查资源是否已有 HPA 或 VPA,并验证是否允许自动创建。这种自动化方法简化了 VPA 管理,但需注意 VPA 与使用资源指标的 HPA 不兼容,且某些应用可能需要选择退出。
默认 VPA 值的设置与影响
为避免应用在高峰期间中断,团队仅控制资源请求,设置极低的最小值(如 CPU 10 毫核、内存 32 MB),并根据原始请求或限制设置最大值。此举使开发和暂存集群的 CPU 和内存使用量减少了 30%。然而,固定堆大小的旧 Java 应用可能无法受益,且多容器应用需避免设置 maxAllowed 值。
非办公时间缩减与 PDB 策略
使用 kube-downscaler 在非办公时间缩减资源,减少成本和 CO2 排放。针对节点利用率低的问题,团队实施 Kyverno 策略防止有问题的 PDB 配置阻碍节点移除,并定期清理无效 PDB。这些措施使开发和暂存集群月度成本降低 50%,生产集群则采用选择加入模型。
Q&A
阿迪达斯是如何降低Kubernetes集群的运行成本的?
阿迪达斯通过降低EC2实例成本、自动创建Vertical Pod Autoscalers(VPAs)和使用kube-downscaler等措施,将Kubernetes集群成本降低了50%。
Karpenter在阿迪达斯的Kubernetes集群中起到了什么作用?
Karpenter是一个集群自动扩展器,根据应用需求动态调整节点数量,优化资源利用率,确保集群在正确的时间拥有合适的节点。
阿迪达斯如何使用Kyverno来优化资源利用?
阿迪达斯使用Kyverno自动创建VPAs,并配置策略以检查资源是否允许自动创建VPAs,从而提高资源利用率。
阿迪达斯在非办公时间如何减少资源使用?
阿迪达斯利用kube-downscaler在非办公时间缩减资源,从而减少CO2排放和成本。
阿迪达斯在实施成本优化时遇到了哪些挑战?
阿迪达斯在实施成本优化时面临的挑战包括VPAs与HPAs的兼容性问题,以及某些应用需要不间断运行的需求。
阿迪达斯如何确保Kubernetes集群的节点容量?
阿迪达斯确保节点容量的方法包括设置适当的VPA配置、监控节点使用情况以及通知用户变更。