Bendi新闻
>
Expedia 开源针对 Kubernetes 工作负载的容器启动自动扩缩器(CSA)

Expedia 开源针对 Kubernetes 工作负载的容器启动自动扩缩器(CSA)

1月前

作者 | Claudio Masolo
译者 | 张卫滨
策划 | Tina

Expedia 的性能和可靠性团队最近 开源了 其 容器启动自动扩缩器(container-startup-autoscaler,CSA)。CSA 是一个 Kubernetes 控制器,利用 Pod 资源的原地资源更新(In-Place Update of Pod Resources)特性,在启动过程中基于用户定义的启动时 / 启动后配置动态调整容器的 CPU 和 / 或内存资源。

Pod 资源的原地资源更新特性自 Kubernetes 1.27.0 进入 alpha 状态。该功能能够修改 Pod 资源(请求和限制),而无需重启 Pod。在此之前,对 Pod 的所有调整都必须重启 Pod 才能实现。

在 Kubernetes 工作负载的管理中,有一个长期存在的问题,那就是如何优化容器资源,以便于适应在启动阶段和启动后阶段展现出截然不同资源使用模式的工作负载。在原地资源更新特性引入之前,在启动密集型工作负载时,需要在实现一致的启动时间和尽量减少启动后资源浪费之间做出权衡:

  1. 突发的服务质量(Quality of Service,QoS):

    1. 设置高于请求的限制,在启动期间预留超出请求的资源

    2. 由于依赖于集群节点的负载情况,启动时间无法预测

    3. 启动后的性能也可能不稳定,原因在于额外回收(scavenged)资源的不确定性,尤其是在集群联合的机制中

  2. 确保 QoS(1):

    1. 建立与请求相等的限制,优先考虑启动时间

    2. 可预测的启动时间和启动后性能,但是可能会造成浪费,尤其是在 Pod 副本数量过多的情况下

  3. 确保 QoS(2):

    1. 设置与请求相等的限制,强调正常工作负载服务的性能

    2. 可预测和可接受的启动后性能,但代价是启动时间较慢,从而会延长部署的持续时间和水平扩展的反应时间,影响运行效率

容器启动自动扩缩器(CSA)在 Pod 级别运行。它与各种工作负载管理 API(如 Deployments、StatefulSets 和 DaemonSets)集成,确保不同 Pod 管理方法之间的兼容性。它既支持初始的容器启动,也支持 Kubernetes 启动的重启操作。

CSA 的逻辑模式

CSA 可关注 Pod 中的单个 non-init/ephemeral 容器。目标容器的名称和所需的启动时 / 启动后资源配置等细节信息都封装在特定 Pod 的注解中。

CSA 在监控要用于扩展的 Pod(通过标签识别)时,会对这些 Pod 中的变化做出响应。当探测出符合条件的 Pod 发生变化,CSA 就会评估目标容器的当前状态,并根据其状态执行如下所示的某个操作:

  1. 命令其执行启动资源设置(当目标容器处于非活动状态,并且已经应用过了启动后设置)

  2. 命令其执行启动后资源设置(当目标容器处于活动状态,并且已经应用过了启动期设置)

  3. 评估先前执行的缩放命令的状态并生成相应报告。确认成功的缩放已执行。

CSA 会在其 Pod 创建目标容器时以及 Kubernetes 重新启动目标容器时进行干预。CSA 在不必要时会避免执行扩缩操作。例如,如果目标容器在准备就绪前反复启动失败(促使 Kubernetes 以 CrashLoopBackOff 的方式重新启动),在这种情况下,CSA 只会应用一次启动资源。此外,CSA 还会生成度量指标、Kubernetes Pod 事件和详细的状态更新,所有的这些内容都会纳入到扩展的 Pod 注解中。

CSA 有一些限制:

  • 最初声明的目标资源必须得到保证(请求 == 限制),以便于符合启动资源能够得到保证的特点。当前的 Kube API 拒绝改变资源的服务质量(QoS)。随着 Pod 资源原地更新特性的发展,这一限制应该会得到解决。

  • 如上所述,启动后的资源也必须得到保证(请求 == 限制),以便于符合启动资源能够得到保证的特点。

  • 缩放目标容器尝试失败后不会进行重试。

CSA 的主要目标是让 Kubernetes 工作负载管理员在启动过程中精细调整容器资源,而不必在启动后进行资源配置,从而减少相关的权衡。这种方法有助于实现如下目标:

  1. 通过分离启动阶段和启动后阶段的资源设置,减少资源浪费。

  2. 提高启动性能和可预测性,实现更快的横向扩展操作。

到 Kubernetes 1.29 为止,CSA 所依赖的 Pod 资源原地更新特性还处于 alpha 阶段。因此,CSA 功能需要启用 InPlacePodVerticalScaling 特性门控(feature gate)。鉴于该特性和 CSA 实现都在持续开发中,建议谨慎使用。在达到稳定状态之前,Expedia 团队建议仅将 CSA 用于本地或非生产 Kubernetes 环境中进行预览。

查看英文原文:

Expedia Opensourced Its Container-Startup-Autoscaler (CSA) for Kubernetes Workloads (https://www.infoq.com/news/2024/04/expedia-startup-autoscaler/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

谷歌裁掉整个 Python 团队!PyTorch 创始人急得直骂人:“WTF!核心语言团队无可替换”

德国再次拥抱Linux:数万系统从windows迁出,能否避开二十年前的“坑”?

系统 bug 致百人入狱,砸了 2.8 亿元仍上云失败!二十年了,这家大企业被日本软件坑惨了

Rust 生态纯属炒作?3 年写了 10 万行代码的开发者吐槽:当初用 Rust 是被忽悠了

微信扫码关注该文公众号作者

来源:InfoQ

相关新闻

我家一玩直"哇塞"的科学气象模拟器,沉浸互动/还是加湿器(明10点开团)带房私 | couple入住,工作党,坐标UCL,寻找预算£400/周的房源!(更多求租信息,持续更新)书生・浦语 2.0(InternLM2)大语言模型正式开源AWS祖传技能——重生(创建fork分支)之 “我是真开源”看了俞敏洪儿子的故事,我才顿悟: 那些一夜开窍的“普通”孩子,背后都站着这样的父母(深度好文)超轻坚固、好骑好看的2024新款优贝自行车开团(14-26寸)1000+瑜伽垫才有的配置,我100出头也能拥有同级别品质(明10点开团)女儿听了一年的新闻栏目,对考试&写作都有帮助,现在入赠品多(明10点开团)过年送孩巨难买的龙钞龙票,我给你们找到官方渠道了/限500套(明10点开团)年前大扫除我必用的一款小家电,今年这台我天天都想用(明10点开团)200+能入悉尼购物中心里的年服大衣,定制羊毛混纺面料/某宝没有(明10点开团)内资券商|申万宏源 2025届暑期实习招募(校招提前批)正式启动带房私 | 伦敦求6月离kcl近、通勤方便的房源,预算£280!(更多求租信息,持续更新)谁能真正把AI用起来?这款新产品希望把AI融入每个人的日常工作|100个革新产品(7/100)谢菲尔德有空调的公寓2bed loft房型正在寻找一名女室友哦....有意向的戳! 更多全英各地转租房源持续更新(1月29日)伦敦学生公寓步行到UCL只要7分钟仅£520/周;E14 高端房源Lincoln Plaza接受2个月的短租(1月16日更新)步行7分钟到UCL的Scape Bloomsbury仅£450/周,更多转租房源戳这里!(1月29日更新)伦敦4月转租来咯!步行15分钟到IC帝国理工的2b2b房源仅£600/周,更多便宜转租房源看这里!(1月24日更新)你在找英国1月的房源吗?快来看看这个转租房源更新列表,转租比直租更便宜!(1月24日更新)【今晚8点开抢】记忆里的经典国货限量5折!!!(文末有礼)带房私 | 上UAL语言班的男生求租,爱干净不惹事不开party不养宠物!(更多求租信息,持续更新)开团 | 没有平替,夏天出门的“保命”穿搭还全靠它!(今夏最后一次返场!)( )的一生:抠抠搜搜买了很多东西的感觉谁懂?国家药监局关于发布医疗器械临床试验机构监督检查办法(试行)的通告
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。