资源画像,看得见的容器资源优化助手

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 日前,ACK 控制台在此基础上正式发布了资源画像功能,为用户提供了可视化的交互页面,便于管理员快速分析应用资源规格的合理性,并进行资源规格配置的变更。该功能目前已经正式开放公测,ACK 用户可以直接申请白名单试用。

作者:张佐玮(佑祎)


背景介绍

K8s 为集群资源提供了良好的抽象,用户可以直接根据应用的资源需求填写容器资源规格,这种方式有效提升了集群资源的管理效率。然而,一直以来,容器资源规格填写的难题一直都让应用管理员们无法摆脱,过高的资源规格会导致资源浪费,而过低的规格又会为应用带来潜在的稳定性风险。


往期文章资源画像,让容器资源规格的填写不再纠结我们介绍了阿里云容器服务 Kubernetes 版(Alibaba Cloud Container Service for Kubernetes,以下简称 ACK)提供的资源规格智能推荐功能,用户可以通过 ack-slo-manager 组件提供的 CRD 对象查询到容器的资源推荐值。


日前,ACK 控制台在此基础上正式发布了资源画像功能,为用户提供了可视化的交互页面,便于管理员快速分析应用资源规格的合理性,并进行资源规格配置的变更。该功能目前已经正式开放公测,ACK 用户可以直接申请白名单试用。


容器资源配置


K8s 使用了 request 和 limit 来描述容器对 CPU 和内存资源的需求,reqeust 影响 Pod 的节点分配结果,调度器会使用节点的“资源容量”(capacity)进行匹配,确保容量充足,而 limit 决定了容器在节点运行时可以使用的资源上限,当容器尝试超用资源时会被约束(throttled)甚至终止(kill)。


一直以来,容器资源规格 request 和 limit 的填写都让 K8s 的用户饱受困扰,一方面,应用管理员需要预留相当数量的资源冗余来应对上下游链路的负载波动,保障线上应用的稳定性;而另一方面的现实是,在大部分在线服务的生产环境中,集群的资源利用率处于相当低的水平,存在大量的资源浪费。


应用的资源画像数据可以提供有效帮助,所谓资源画像,指的是应用 CPU、内存等资源的使用特征,如果我们能够将资源使用的历史数据收集起来,并进行汇总分析,在设置容器资源规格时就可以做到有的放矢。ACK 控制台资源画像功能的发布,就旨在解决这一难题,帮助运维人员优化容器资源规格,提升管理效率,保障应用稳定运行的同时,充分提升集群资源使用率。


资源画像


ACK 资源画像会持续收集容器的资源用量进行汇总分析,为每个容器生成资源规格的推荐值,控制台会针对工作负载原始的资源请求量(request)给出调整建议,包括“升配”、“降配”、以及”保持“三种,若工作负载有多个容器,控制台会优先使用偏差幅度最大的容器作为推荐。应用管理员可以通过该页面直接筛选出需要调整的应用,并在详情页进行修改。


1.png

策略管理


资源画像支持按需开启的的管理策略,可以指定命名空间和应用类型范围。策略同时还支持为应用配置资源消耗冗余,所谓资源消耗冗余,对应的场景是管理员在评估应用业务容量时(例如 QPS),通常不会将物理资源使用到 100%。原因既包括超线程等物理资源的局限性,也包括应用自身需要考虑留有余量以应对高峰时段的负载请求。当资源画像的推荐值与原始资源请求的差距超过安全冗余时,才会提示降配建议。


2.png

资源用量分析


在资源画像控制台主页,点击工作负载名称,可以进入对应的画像详情页面,在画像详情页可以对应用的资源消耗数据做进一步的详细分析。详情页的资源曲线分别展示了各容器的资源限制值(limit)、资源请求值(request)、资源画像功能提供的推荐值(recommend),以及应用各副本资源使用量的平均值和最大值(average/max usage)。


通过应用的画像详情页,用户可以对资源使用情况进行直观的分析,评估容器当前的资源规格(request/limit)是否合理。


3.png


资源配置变更


画像详情页面底部还同时提供了资源变配的功能,变配窗口内默认展示了各容器当前的所需资源(request)和限制资源(limit),以及资源画像为容器生成的推荐值,推荐值来自于对容器资源消耗历史数据的聚合分析,确保推荐值可以尽量满足容器资源消耗的需求。这里同时还展示了策略管理中为应用配置的冗余系数,方便应用管理员在修改资源规格配置时参考。


4.png


填写完成后点击确定按钮,将执行资源规格更新操作并自动跳转到工作负载详情页。资源规格更新后,控制器会对工作负载进行滚动更新并重新创建 Pod。


使用建议


资源冗余配置


资源画像的变配建议是比较推荐值与当前应用资源申请量(request)得到的,当推荐值高于 request 时,说明容器实际的资源用量已经超过了申请量,应提高请求规格;而当推荐值低于 request 时,说明容器实际的资源用量低于请求量,但这并不代表着一定要降低请求规格。


原因是应用管理员在填写资源申请时,通常都会在原始的资源需求基础上额外增加一定程度的资源冗余,用于应对流量高峰,或是做例如“同城多活”这类高可用场景的切换。此外,部分应用还对资源较为敏感,无法在宿主机负载较高时平稳运行,这也需要在基础值上调高规格。


因此资源画像的变配建议会参考用户在策略管理中配置的冗余系数,只有当推荐值显著低于请求量时才会提示“降配”操作。冗余系数只影响资源变配的提示,不影响推荐值算法的计算过程,原因是资源画像提供的推荐值是对应用当前资源需求情况的总结,管理员在使用时应结合应用自身特性,在推荐值的基础之上进行加工。


5.png


应用适用类型


目前资源画像的推荐值会优先考虑满足容器的资源使用,确保可以覆盖绝大部分历史数据样本,因而更适用于在线类型的应用,因为它们通常以服务的形式部署,对响应时间(RT)会有严格的约束,要求资源必须及时得到满足。


与“在线”相对应的是“离线”应用,通常为批处理类型的任务,其更关注数据处理的整体吞吐量,可以接受一定程度的资源竞争,以提高集群资源的整体利用率,因此当前资源画像的推荐值对于离线应用来说会显得有些保守。此外,集群内还会有一些关键的系统组件,通常以“主备”的形式部署多个副本,处于“备份”角色的副本长期处于资源闲置状态。这些“备份”角色的资源用量样本数据会对画像算法产生一定程度的干扰,影响推荐值的准确性。


针对这些场景,管理员应基于应用特点对资源画像的推荐值二次加工后再使用,后续我们也将开放更多能力,提供更加精细的资源画像策略管理。


数据累积时长


资源画像推荐值的算法涉及一套多维度的数据模型,核心关注以下几个方面:


  1. 算法会持续不断的收集容器的资源用量数据,取 CPU 和内存的聚合统计值作为推荐。 


  1. 针对样本数据的时间因素进行了优化,在聚合统计时,较新的数据采样点会拥有更高的权重。 


  1. 算法参考了容器出现 OOM 等运行状态信息,可以进一步提高推荐值的准确性。 


通过以上原理可以看出,资源画像结果的准确性会随着数据样本的累积逐渐提升,因此在初次使用时建议至少保持一天以上的数据累积。原因是当前互联网类型的在线应用会受到人们生产生活习惯的影响,流量负载的峰谷会在不同时间段出现,例如出行类应用会有早晚高峰,文娱类应用会在工作日和节假日的呈现不同特征。因此最好的使用方式,是确保工作负载稳定运行一段时间,收集的数据完整覆盖了流量的波峰波谷之后再使用。


未来计划


ACK 资源画像控制台后续的产品功能已经在规划中,未来我们将提供更为精细化的管理策略以及更为便捷的使用方式,敬请期待!


往期文章《Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架》我们介绍了云原生混部开源系统 Koordinator 的一系列功能,近期 Koordinator 刚刚发布了最新的 0.7 版本,欢迎大家访问官网"koordinaotr.sh"查阅。


接下来我们将逐步把资源画像相关的技术能力也贡献到开源社区,帮助更广大的行业人士改善云原生工作负载运行的效率、稳定性和计算成本。


Koordinator 是一个开放的社区,非常欢迎广大云原生爱好者们通过各种方式一起参与共建,无论您在 K8s 领域是初学乍练还是驾轻就熟,我们都非常期待听到您的声音!


Github 地址: https://github.com/koordinator-sh/koordinator


欢迎扫描下方微信二维码加入 Koordinator 微信群:


6.png


您也可以使用钉钉扫描下方二维码或搜索群号 33383887 加入 Koordinator 社区钉钉群:


7.jpeg


点击此处,即可查看阿里云 ACK 资源画像控制台的详细介绍和使用方法!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4月前
|
存储 消息中间件 容器
当一个 Pod 中包含多个容器时,容器间共享一些重要的资源和环境,这使得它们能够更有效地协同工作和交互。
当一个 Pod 中包含多个容器时,容器间共享一些重要的资源和环境,这使得它们能够更有效地协同工作和交互。
|
4月前
|
存储 资源调度 运维
【容器化运维的艺术】揭秘镜像仓库与资源调度的完美协同!
【8月更文挑战第25天】随着容器技术的发展,企业日益倾向于采用容器化方式部署应用,以提升部署效率及资源管理灵活性。其中,镜像仓库和资源调度成为核心组件。镜像仓库实现容器镜像的集中存储与管理,确保版本一致性和安全性;资源调度则依据实际需求优化容器运行位置与资源配置,提高资源利用率和应用性能。二者协同作用,显著简化应用部署流程,为企业创造更大价值。
74 3
|
4月前
|
存储 Kubernetes 数据中心
在K8S中,同⼀个Pod内不同容器哪些资源是共用的,哪些资源是隔离的?
在K8S中,同⼀个Pod内不同容器哪些资源是共用的,哪些资源是隔离的?
|
4月前
|
缓存 Kubernetes 数据中心
在Docker中,如何控制容器占用系统资源(CPU,内存)的份额?
在Docker中,如何控制容器占用系统资源(CPU,内存)的份额?
|
4月前
|
弹性计算 Kubernetes 开发者
利用容器化服务实现游戏服务器的动态资源配置
【8月更文第12天】在游戏行业中,用户基数的变化往往呈现出明显的波动性,特别是在推广活动期间,用户基数会显著增加,而在非推广期则会有所下降。为了应对这种变化,游戏开发者需要一种能够根据用户基数动态调整服务器资源的解决方案,以确保用户体验的同时最大限度地节省成本。容器化服务因其灵活的资源管理和成本控制能力,成为了理想的解决方案。
65 2
|
4月前
|
存储 缓存 监控
在Linux中,如何优化虚拟机和容器的性能和资源使用?
在Linux中,如何优化虚拟机和容器的性能和资源使用?
|
4月前
|
Dragonfly Docker 容器
实时数仓Hologres容器镜像问题之优化私有化部署如何解决
容器镜像常遇问题包括:将过多组件打包至单一容器、使用systemd导致状态不一致、私有部署中传输未优化的镜像包及基础镜像频繁下发致网络拥堵。应采用轻量化基础镜像,明确镜像版本,并利用镜像层复用来优化。[了解更多](https://developer.aliyun.com/ask/666077)。 避免容器臃肿的方法是选用精简基础镜像,固定镜像版本,并通过镜像层复用来减少重复内容,实现高效部署。[查看详情](https://developer.aliyun.com/ask/666078)。
53 0
|
4月前
|
数据采集 监控 Kubernetes
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
Job类日志采集问题之iLogtail以减小容器发现和开始采集的延时如何优化
|
18天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
59 2
|
8天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
36 5