写点什么

阿迪达斯平台团队是如何减少运行 Kubernetes 集群的成本的

作者:Claudio Masolo

  • 2024-09-03
    北京
  • 本文字数:2003 字

    阅读完需:约 7 分钟

阿迪达斯平台团队是如何减少运行Kubernetes集群的成本的

在最近的一篇 Medium 博客文章中,平台工程师 Iya Lang 介绍了阿迪达斯如何将在 AWS 上运行的 Kubernetes 集群的成本最多降低 50% 的。


阿迪达斯团队采取的多管齐下方式对许多组织的平台工程团队都会很有助益,因为 CNCF 最近的一份报告指出,49% 的受访者由于引入 Kubernetes 带来了云成本的增加。


该团队引入的第一项措施主要关注降低 EC2 实例的成本。为了实现这一点,他们实施了 Karpenter,这是一个由 AWS 开发的集群自动扩缩器(autoscaler),它会根据应用程序的需求调整节点的数量。Karpenter 的特性包括:


  • 根据实时的 Pod 调度需求,动态供应计算资源(EC2 实例)。这确保了集群能够在正确的时间拥有正确的节点数量,以处理应用程序的负载;

  • 通过以下方式优化集群的资源使用率:

  • 仅启动必须的实例类型以满足 Pod 的需求;

  • 寻找机会以移除利用率不足的节点;

  • 在可能的情况下,利用更具成本效益的方案替代昂贵的实例。识别出成本最低且中断风险最小的应用,让它们使用 spot 实例(以较低成本提供的未使用的 AWS 计算能力);

  • 将工作负载整合到更高效的计算资源上。

  • 与现有的 Kubernetes 工作流进行无缝集成。你可以对其行为的各个方面进行配置,包括:

  • 用于供应的 EC2 实例的类型;

  • 节点所配置的启动模版规范;

  • 扩展策略,根据特定的需求调整资源分配。


Karpenter 目前仅支持 AWS,但是该项目有计划将其他云供应商也纳入进来。


阿迪达斯团队采取的第二项措施是自动创建垂直 Pod 自动扩缩器(Vertical Pod Autoscaler,VPA),以提高资源的利用率。具体来说,平台团队为开发和 staging 集群中的所有工作负载自动创建了垂直 Pod 自动扩缩器。阿迪达斯选择了通常用于应用程序安全的策略工具 Kyverno 来生成默认的 VPA。


Kyverno 是一个策略引擎,在 Kubernetes 集群中作为动态准入控制器来运行。它负责校验和变更来自 Kubernetes API 服务器的准入 webhook HTT 回调,应用相关的策略来执行或拒绝准入请求。Kyverno 策略可根据各种条件(包括资源种类、名称、标签选择器等)来选定资源。变更策略可以通过 overlays(类似于 Kustomize)或 JSON Patch 来声明。校验策略使用 overlay 语法,支持模式匹配和条件(if-then-else)逻辑。策略执行的结果会记录为 Kubernetes 事件。对于已允许的请求或执行 Kyverno 策略之前的请求,Kyverno 会生成策略报告。这些报告提供了与策略相匹配的资源运行列表、资源的状态和其他详细信息。



Kyverno 架构


阿迪达斯团队将 Kyverno 策略按照如下方式进行配置:


  1. 检查资源是否具有水平自动扩缩器(Horizontal Pod Autoscaler,HPA)或 VPA;

  2. 校验是否允许为资源及其命名空间创建 VPA。


团队引入的第三项措施是设置 VPA 的默认值。在事先不了解应用程序的情况下设置 VPA 是一项很具挑战性的事情。阿迪达斯团队决定只控制资源请求,以防止在使用高峰期出现应用程序的中断。他们将允许的最小值设置为非常低的水平(例如,CPU 为 10 millicore,内存为 32M),并根据原始请求或限制来设置最大值,以确保稳定性。对于有多个容器的应用程序,团队避免使用maxAllowed以防止出现潜在的问题。


在实施默认 VPA 后,开发和 staging 集群的 CPU 和内存使用率降低了 30%。不过,这里也存在一些限制:


  • VPA 无法与使用资源度量指标的 HPA 协同工作;

  • 由于堆大小固定,比较老的 Java 应用程序可能无法从中获益;

  • 某些应用程序需要不间断运行,因此必须为它们提供不参与其中的方案。



阿迪达斯团队还希望通过在非办公时间缩减资源以减少二氧化碳的排放量并节省开支。他们使用了kube-downscaler。该工具可根据预定义的时间表调整副本数量,并允许针对特定应用进行定制。


在实施了这些措施后,团队面临着节点利用率不足的问题。为了解决这个问题,他们实现了一些 Kyverno 策略,以防止有问题的 Pod Disruption Budget(PDB)配置阻碍节点的移除。他们还制定了一项清理策略,定期清除无效的 PDB。


阿迪达斯团队针对非生产集群实施了上述成本优化措施,并在所有环境中采用了 PDB 策略。这一措施使开发和 staging 集群的每月成本降低了 50%。他们对生产集群采用了选择性(opt-in)模式,允许应用团队选择自己的工具和配置。


阿迪达斯团队分享了成功优化成本的一些关键考量因素:


  • 确保有足够的节点容量来处理 Pod 的增加;

  • 设置适当的 VPA 配置,以平衡成本的节约和应用的性能;

  • 通知用户关于变更的信息,防止与事故相关的中断;

  • 保持全面监控,以衡量相关的影响。


该团队认为,成本优化是一个需要不断调整的持续过程。


在 Reddit 上可以找到更多企业尝试降低云成本的例子,例如“将 Kubernetes Dev Envs 的云成本降低 95% 以上”以及“如何降低 AWS 的成本?”。


应用的优化也可以降低云成本,提高可持续性。Erik Peterson 在 QCon SF 上介绍了相关的指导方案,并为 InfoQ 撰写了一篇相关的文章,即“一行代码价值百万美元:从工程技术角度看云成本优化”。


原文链接:

https://www.infoq.com/news/2024/07/adidas-kubernetes-cost-reduction

2024-09-03 10:375401

评论

发布
暂无评论
发现更多内容

京东为openKylin新增SBOM利器,保障软件供应链安全和可追溯性!

京东科技开发者

就业寒冬,我是如何拿到5个offer的(附面试题)

霍格沃兹测试开发学社

招聘严峻期我最终拿到5个Offer的一些经验分享(附面试题)

测试人

面试 软件测试

【重磅干货】大模型时代,开发者云上成长指南

华为云开发者联盟

华为云 华为云GaussDB 华为云开发者联盟 华为云CodeArts 华为云盘古大模型

移动端提高pdf预览清晰度

京东科技开发者

殊荣双至,天翼云边缘计算再获两项大奖!

天翼云开发者社区

云计算 边缘计算 云服务 边缘安全

tiup与prometheus迁移

TiDB 社区干货传送门

迁移 管理与运维

topaz gigapixel ai怎么安装?Topaz Gigapixel AI激活安装详细教程

Rose

topaz gigapixel ai破解版 无损放大图像 Topaz Gigapixel AI 安装

人工智能降噪:topaz photo ai 操作系统 topaz photo ai中文破解安装包

Rose

智能降噪 Topaz Photo AI系统要求 Topaz Photo AI破解版

新体验、高效能,星河零代码产线加速带动产业新质生产力

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 产品更新 PaddleX

实现以图搜货功能,淘宝API开发实战分享

tbapi

图片搜索接口 以图搜货接口 拍立淘接口

cad设计绘图Autodesk AutoCAD 2025完整版中文破解工具

Rose

AutoCAD 2025 CAD2025

一文读懂MES和ERP的区别

万界星空科技

制造业 ERP mes 万界星空科技 生产管理软件

IPQ6018, IPQ6010, IPQ6000-Exploring the high-performance WiFi chip series

wifi6-yiyi

wifi6 IPQ6010

Maya 2025下载 玛雅maya2025新功能介绍

Rose

Maya 2025中文版 Maya 2025下载 三维动画软件 玛雅2025新功能 玛雅2025破解

【论文速读】| 通过间接提示注入危害现实世界中的LLM集成应用

云起无垠

玩转云端|天翼云边缘安全加速平台AccessOne实用窍门之上传下载极速推进,纵享丝滑体验!

天翼云开发者社区

云计算 边缘计算 云服务 边缘安全

TiDB 三中心"脑裂"场景探讨

TiDB 社区干货传送门

3D数字绘画和雕刻软件:Mudbox 2025 新功能介绍及安装教程

Rose

Mudbox 2025下载 Mudbox 2025新功能 Mudbox 2025安装教程 3D数字雕刻

探秘Kubernetes:在本地环境中玩转容器技术

SEAL安全

Kubernetes 容器 云原生 本地环境

万界星空科技漆包线工厂生产管理软件

万界星空科技

mes 万界星空科技 漆包线mes 漆包线

从银行资产规模看TiDB上线杭州银行核心到底意味着什么?

TiDB 社区干货传送门

数据库前沿趋势

标准库unsafe:带你突破golang中的类型限制

华为云开发者联盟

Go golang 开发 华为云 华为云开发者联盟

使用云压测回放 GoReplay 录制的请求

腾讯云可观测平台

GOREPLAY

万界星空科技WMS仓储管理包含哪些具体内容?

万界星空科技

wms 万界星空科技 仓库管理系统

云服务器几核几G配置应该怎么选择?

Finovy Cloud

服务器 云服务器

吴晓波频道:基于数据飞轮更懂会员需求 提升业务价值

Geek_2d6073

AutoCAD LT 2025介绍(精简版cad2025)及中文版安装教程

Rose

Autodesk AutoCAD LT 2025 cad2025破解版 AutoCAD LT 2025介绍

Windows自定义后台进程并设置为开机启动

GousterCloud

windows 自定义 后台进程 开机启动

解析 WebSocket 与 HTTP 协议的关键区别

Apifox

编程 程序员 网络协议 HTTP websocket

2024多云管理平台CMP排名看这里!

行云管家

云计算 云服务 多云管理 云管

阿迪达斯平台团队是如何减少运行Kubernetes集群的成本的_云计算_InfoQ精选文章