QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

Claudio Masolo

  • 2024-05-28
    北京
  • 本文字数:1721 字

    阅读完需:约 6 分钟

大小:886.72K时长:05:02
Expedia 开源针对 Kubernetes 工作负载的容器启动自动扩缩器(CSA)

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):


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

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

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

2.确保 QoS(1):

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

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

3.确保 QoS(2):

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

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


容器启动自动扩缩器(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 翻译,未经许可禁止转载。

2024-05-28 14:413585

评论

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

聊聊 Zookeeper 的 4lw 与信息安全

明哥的IT随笔

zookeeper 数据安全

读书笔记丨远程服务调用和RESTful,如何分析和抉择?

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜 远程服务调用

ByteHouse云数仓版查询性能优化和MySQL生态完善

NineData

数据库 架构 字节跳动 Clickhouse bytehouse

Linux常用命令

追赶者

进程 SSH Liunx 端口占用

使用了Spring的事件机制真香!

做梦都在改BUG

Java spring

大连理工大学OpenHarmony技术俱乐部正式揭牌成立

Geek_2d6073

阿里新一代微服务,内部大佬手抄的笔记+脑图不容错过,全是精华

做梦都在改BUG

Java 架构 微服务 Spring Cloud Aliababa

蚂蚁安全科技 Nydus 镜像加速实践

SOFAStack

开源 镜像 镜像安全 OCI Nydus

Apache Flink ML 2.2.0 发布公告

阿里云大数据AI技术

大数据 算法 企业号 4 月 PK 榜

麻了,不要再动不动就BeanUtil.copyProperties!

做梦都在改BUG

YARN 远程代码执行(RCE)安全漏洞问题分析与解决方案

明哥的IT随笔

大数据 YARN 数据安全 RCE

合合信息新推出反光消除技术,助力手写文字识别更精准

合合技术团队

人工智能 文字识别 扫描全能王 反光去除

和面试官聊1小时Java并发,多亏GitHub上这份笔记

做梦都在改BUG

Java 并发编程

【微信小程序管理】第三方软件的优势有哪些

没有用户名丶

第二届广州·琶洲算法大赛启动,百度飞桨助力广州打造中国算法新高地

飞桨PaddlePaddle

算法 百度飞桨 文心大模型

sqlserver锁表产生的原因

linux大本营

数据库· SQL sever 表锁

Apifox WebSocket 调试功能你会用了吗?

Apifox

程序员 接口 websocket API API 调试

华为开发者大赛中国区正式启动 携手探索ICT无限可能

Geek_2d6073

从源码全面解析LinkedBlockingQueue的来龙去脉

做梦都在改BUG

Spring Boot 整合 Redis 基于 Stream 消息队列 实现异步秒杀下单

做梦都在改BUG

c++实现一个tcp高性能网络服务器

linux大本营

TCP 多线程 异步IO epoll 高性能服务器

一个解决tcp粘包问题的c++代码

linux大本营

TCP 网络协议 C++ TCP 粘包

ChatGPT 会在三年内终结编程吗?| 社区征文

神木鼎

三周年征文

机器学习分布式框架Ray

AIWeker

Python 分布式 python小知识 三周年连更

Springboot之如何纯文本转成.csv格式文件?|超级详细,建议收藏

bug菌

Spring Boot 2 spring-boot 三周年连更

【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案

HarmonyOS SDK

HMS Core

那些关于DIP器件不得不说的坑

华秋PCB

插件 DIP 元器件 PCB PCB设计

eBPF的发展演进---从石器时代到成为神(二)

统信软件

Linux Kenel 内核 Linux内核

Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

汀丶人工智能

人工智能 机器学习 深度学习 Gradio AI可视化

在毫秒量级上做到“更快”!DataTester助力飞书提升页面秒开率

字节跳动数据平台

大数据 AB testing实战 用户体验 企业号 4 月 PK 榜 秒开率

awk常量和标识符

linux大本营

脚本 awk

Expedia 开源针对 Kubernetes 工作负载的容器启动自动扩缩器(CSA)_后端_InfoQ精选文章