作者:张佐玮(佑祎)

背景介绍

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)给出调整主张,包含“升配”、“降配”、以及”保持“三种,若作业负载有多个容器,控制台会优先运用误差幅度最大的容器作为引荐。运用办理员能够经过该页面直接筛选出需要调整的运用,并在概况页进行修正。

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

战略办理

资源画像支撑按需开启的的办理战略,能够指定命名空间和运用类型范围。战略一起还支撑为运用装备资源耗费冗余,所谓资源耗费冗余,对应的场景是办理员在评价运用事务容量时(例如 QPS),一般不会将物理资源运用到 100%。原因既包含超线程等物理资源的局限性,也包含运用本身需要考虑留有余量以应对顶峰时段的负载恳求。当资源画像的引荐值与原始资源恳求的距离超过安全冗余时,才会提示降配主张。

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

资源用量剖析

在资源画像控制台主页,点击作业负载名称,能够进入对应的画像概况页面,在画像概况页能够对运用的资源耗费数据做进一步的详细剖析。概况页的资源曲线分别展示了各容器的资源束缚值(limit)、资源恳求值(request)、资源画像功用供给的引荐值(recommend),以及运用各副本资源运用量的平均值和最大值(average/max usage)。

经过运用的画像概况页,用户能够对资源运用情况进行直观的剖析,评价容器当时的资源标准(request/limit)是否合理。

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

资源装备变更

画像概况页面底部还一起供给了资源变配的功用,变配窗口内默认展示了各容器当时的所需资源(request)和束缚资源(limit),以及资源画像为容器生成的引荐值,引荐值来自于对容器资源耗费历史数据的聚合剖析,保证引荐值能够尽量满意容器资源耗费的需求。这儿一起还展示了战略办理中为运用装备的冗余系数,便利运用办理员在修正资源标准装备时参阅。

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

填写完成后点击确认按钮,将履行资源标准更新操作并自动跳转到作业负载概况页。资源标准更新后,控制器会对作业负载进行翻滚更新偏重新创建 Pod。

运用主张

资源冗余装备

资源画像的变配主张是比较引荐值与当时运用资源恳求量(request)得到的,当引荐值高于 request 时,说明容器实践的资源用量现已超过了恳求量,应进步恳求标准;而当引荐值低于 request 时,说明容器实践的资源用量低于恳求量,但这并不代表着必定要降低恳求标准。

原因是运用办理员在填写资源恳求时,一般都会在原始的资源需求根底上额外添加必定程度的资源冗余,用于应对流量顶峰,或是做例如“同城多活”这类高可用场景的切换。此外,部分运用还对资源较为灵敏,无法在宿主机负载较高时平稳运转,这也需要在根底值上调高标准。

因此资源画像的变配主张会参阅用户在战略办理中装备的冗余系数,只有当引荐值显著低于恳求量时才会提示“降配”操作。冗余系数只影响资源变配的提示,不影响引荐值算法的核算过程,原因是资源画像供给的引荐值是对运用当时资源需求情况的总结,办理员在运用时应结合运用本身特性,在引荐值的根底之上进行加工。

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

运用适用类型

现在资源画像的引荐值会优先考虑满意容器的资源运用,保证能够掩盖绝大部分历史数据样本,因而更适用于在线类型的运用,由于它们一般以服务的方式部署,对响应时刻(RT)会有严厉的束缚,要求资源必须及时得到满意。

与“在线”相对应的是“离线”运用,一般为批处理类型的任务,其更重视数据处理的全体吞吐量,能够承受必定程度的资源竞争,以进步集群资源的全体利用率,因此当时资源画像的引荐值对于离线运用来说会显得有些保存。此外,集群内还会有一些关键的体系组件,一般以“主备”的方式部署多个副本,处于“备份”人物的副本长期处于资源搁置状态。这些“备份”人物的资源用量样本数据会对画像算法产生必定程度的搅扰,影响引荐值的准确性。

针对这些场景,办理员应根据运用特色对资源画像的引荐值二次加工后再运用,后续咱们也将开放更多才能,供给愈加精细的资源画像战略办理。

数据累积时长

资源画像引荐值的算法触及一套多维度的数据模型,核心重视以下几个方面:

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

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

  3. 算法参阅了容器呈现 OOM 等运转状态信息,能够进一步进步引荐值的准确性。

经过以上原理能够看出,资源画像结果的准确性会跟着数据样本的累积逐步提高,因此在初度运用时主张至少保持一天以上的数据累积。原因是当时互联网类型的在线运用会遭到人们生产生活习惯的影响,流量负载的峰谷会在不一起间段呈现,例如出行类运用会有早晚顶峰,文娱类运用会在作业日和节假日的呈现不同特征。因此最好的运用方式,是保证作业负载稳定运转一段时刻,搜集的数据完整掩盖了流量的波峰波谷之后再运用。

未来方案

ACK 资源画像控制台后续的产品功用现已在规划中,未来咱们将供给更为精细化的办理战略以及更为便捷的运用方式,敬请等待!

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

接下来咱们将逐步把资源画像相关的技能才能也奉献到开源社区,协助更广阔的行业人士改善云原生作业负载运转的功率、稳定性和核算成本。

Koordinator 是一个开放的社区,十分欢迎广阔云原生爱好者们经过各种方式一起参加共建,不管您在 K8s 范畴是初学乍练仍是驾轻就熟,咱们都十分等待听到您的声音!

Github 地址:github.com/koordinator…

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

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

您也能够运用钉钉扫描下方二维码或搜索群号 33383887 参加 Koordinator 社区钉钉群:

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

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