前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pod优先级和抢占提高Kubernetes集群资源利用率

Pod优先级和抢占提高Kubernetes集群资源利用率

作者头像
CNCF
发布2019-12-04 10:59:45
8840
发布2019-12-04 10:59:45
举报
文章被收录于专栏:CNCFCNCF

作者:Bobby Salamat

Kubernetes以运行可扩展工作负载而闻名。它根据资源使用情况调整工作负载。扩展工作负载时,会创建更多应用程序实例。当应用程序对你的产品至关重要时,你希望确保即使在你的群集受资源压力下也会安排这些新实例。解决此问题的一个显而易见的解决方案是过度配置群集资源,以便为扩展情况提供一些闲置资源。这种方法通常有效,但成本更高,因为你必须为大多数时间闲置的资源付费。

Pod优先级和抢占是Kubernetes 1.14里一般可用的调度程序功能,它允许你在不过度配置群集的情况下为关键工作负载实现高水平的调度可信度。它还提供了一种方法来提高群集中的资源利用率,而不会牺牲基本工作负载的可靠性。

保证调度,控制成本

Kubernetes Cluster Autoscaler是K8s生态系统中的一款出色工具,可在你的应用程序需要时为你的群集添加更多节点。但是,群集自动缩放器有一些限制,可能不适用于所有用户:

  • 它在物理集群中不起作用。
  • 向群集添加更多节点的成本更高。
  • 添加节点不是即时的,可能需要几分钟才能使这些节点可用于调度。

另一种选择是Pod优先级(Priority)和抢占(Preemption)。在此方法中,你将多个工作负载组合在一个群集中。例如,你可以在同一群集中运行CI/CD管道,ML工作负载和关键服务。当多个工作负载在同一群集中运行时,群集的大小大于用于仅运行关键服务的群集。如果你为关键服务提供最高优先级,并且CI/CD和ML工作负载的优先级较低,则当你的服务需要更多计算资源时,调度程序会抢占(驱逐)较低优先级工作负载的足够容量,例如ML工作负载,以允许所有你要安排的优先级较高的pod。

使用pod优先级和抢占,你可以在Autoscaler配置中为群集设置最大大小,以确保在不牺牲服务可用性的情况下控制成本。此外,抢占比向群集添加新节点要快得多。在几秒钟内就可以安排高优先级的pod,这对延迟敏感的服务至关重要。

提高集群资源利用率

运行关键服务的集群运营商会随着时间,粗略估计他们在集群中需要的节点数量,以实现高服务可用性。估计通常是保守的。此类估计会考虑流量突发以查找所需节点的数量。可以配置群集自动缩放器永远不会将群集的大小减小到此级别以下。唯一的问题是这种估计通常是保守的,而且大多数时候集群资源可能仍未得到充分利用。Pod优先级和抢占允许你通过在群集中运行非关键工作负载来显着提高资源利用率。

非关键工作负载可能具有多于群集可以运行的pod数量。如果对非关键工作负载给予负数优先级,则当非关键容器挂起时,Cluster Autoscaler不会向群集添加更多节点。因此,你不会产生更高的费用。当你的关键工作负载需要更多计算资源时,调度程序会抢占非关键容器并安排关键容器。

非关键pod填充了群集资源中的“空隙”,可在不增加成本的情况下提高资源利用率。

参与其中

如果你对此功能有反馈意见或有兴趣参与设计和开发,请加入Scheduling特别兴趣小组。

https://github.com/kubernetes/community/tree/master/sig-scheduling

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档