首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理可刻录k8s荚的CPU争用?

如何处理可刻录k8s荚的CPU争用?
EN

Stack Overflow用户
提问于 2019-10-09 03:27:58
回答 3查看 849关注 0票数 3

当您在同一个节点上调度了各种可加载的豆荚时,我正试图让我的头脑清醒一下。当节点的内核正在调度CPU,并且CPU完全负荷时,如何确保特定pod中的工作负载优先于另一个pod?在一个典型的Linux主机中,我对进程之间的争用的想法立即转到进程的“美好”上,但是我没有看到任何类似的k8s机制允许指定节点上豆荚中进程之间的CPU调度优先级。

我读过k8s提供的k8s,它(如果我正确地解释文档的话)只是提供了一种将CPU固定在荚上的机制,而这并不能真正解决我的问题。如果较高优先级的荚没有活动工作负载,同时允许更高优先级的工作负载具有CPU调度优先级(如果需要的话),我仍然希望通过“二等”荚来最大化CPU利用率。

到目前为止,由于没有找到令人满意的答案,我认为社区将选择一种架构解决方案,比如自动缩放或分离节点之间的工作负载。我认为这些并不能真正解决这个问题,但实际上只是向它扔更多的CPU,这正是我想要避免的。当你拥有空闲的CPU时,为什么会有更多的节点呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-09 03:42:07

CPU请求与cgroup CPU优先级相关。基本上,如果Pod A有100 M CPU的请求,而Pod B有200 M的CPU,即使在饥饿的情况下,B的运行秒也是A的两倍。

票数 1
EN

Stack Overflow用户

发布于 2019-10-09 04:38:29

让我首先解释一下在k8s中如何分配和使用CPU (内存有点不同)。

您可以如下所示定义CPU需求。在这里,我们将CPU定义为1000的份额。

代码语言:javascript
复制
resources:
  requests:
    cpu: 50m
  limits:
    cpu: 100m

在上面的例子中,我们要求CPU份额的最小5%和最大10%。

库伯内特斯用请求来安排吊舱。如果节点有超过5%的空闲CPU,则在该节点上调度pod。

这些限制将传递给docker(或任何其他运行时),后者然后在cgroup中配置cpu.shares。

因此,如果您请求5%的CPU,而只使用1%,那么剩下的不锁定在这个吊舱和其他豆荚可以使用这个免费的CPU,以确保所有吊舱获得所需的CPU,这确保了高CPU利用率的节点。

如果您限制在10%,然后尝试使用更多,那么Linux将节流CPU的使用,但它不会杀死荚。

所以说到你的问题,你可以设定更高的极限,你的可装舱,除非所有吊舱cpu同时爆裂,你是好的。如果他们同时爆发,他们将获得同等的CPU作为avaliability。

您可以使用pod 亲和力和抗亲和力在不同的节点上调度所有可刻录的豆荚。

票数 3
EN

Stack Overflow用户

发布于 2019-10-09 13:08:34

如前所述,Pods中的资源管理是用requestslimits声明的。

在Kubernetes中有3个基于requestslimits配置的limits类:

  1. 保证(限制==请求)
  2. 可扩展性(限制>请求)
  3. 尽最大努力(限制和请求未具体说明)

从某种意义上说,它可能会消耗比所请求的资源更多的资源,这两者都可能被认为是“可扩展的”。

最适合您的情况可能是使用Burtstable类来获得更高优先级的Pods和所有其他方面的最大努力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58296648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档