限制一组pod的cpu



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

有没有一种方法可以限制一组pod的CPU,以允许任何单个pod爆发到最大限度,同时集体不允许它们超过最大限度?

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

例如,您可以使用以下配置

  • 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-针对cpu请求和限制

我的建议是启用pod自动缩放。有两种类型:

  1. 水平吊舱自动缩放器(HPA(-如果您的吊舱相同,并且您不需要同时使用所有4个吊舱,则为吊舱实施HPA。有了这个,你可以保留你需要的最小数量的pod,然后根据CPU、内存利用率等指标将它们扩展到你想要的最大数量。HPA

  2. 垂直吊舱自动缩放(VPA(-您可以利用kubernetes提供的资源管理来实现VPA。您可以添加参数resources.requests.cpu来启动您的pod,如果利用率增加,您可以使用参数resources.limits.cpu来限制它。资源管理

在您的情况下,上述两种方法的组合将是理想的。

最新更新