首页 > 解决方案 > 限制一组 pod 的 cpu

问题描述

我有一个基于 Java 的应用程序,它由几个 pod(比如说 4 个)组成,这些 pod 是由毫核总数许可的(假设我们已经购买了 2000mC 的许可证)。应用程序运行在具有 4000mC 的集群主机上,以支持应用程序所需的内存。该应用程序是突发性的,因此每个 pod 都希望在某个时间点使用 2000mC,但不是同时使用。如果 cpu 限制设置为每个 pod 2000mC,那么超过 4 个 pod,我们的许可责任将为 8000mC,尽管实际上主机容量会将其限制为 4000mC。这仍然是我们支付的许可证的两倍。如果我们将每个 pod 限制为 500mC 以确保我们永远不会超过 2000mC 并保持在我们的许可限制内,那么这些 pod 资源不足。

有没有办法限制一组 pod 的 CPU 以允许任何单个 pod 爆破到最大限制,而集体不允许它们超过最大值?

标签: kubernetescpu-usagescheduling

解决方案


这里一个好的策略是同时使用请求和资源的限制参数。

作为您的案例的示例,您可以使用以下配置

  • resources.requests.cpu- 750mC
  • resources.limits.cpu- 2000mC

这将在节点中分配 3000m (740 x 4) CPU,允许额外的 1000mC 用于 CPU 爆发。

参考 - https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/#motivation-for-cpu-requests-and-limits


推荐阅读