假设我有一个有3个容器的pod:X
,Y
和Z
.
k8可以为pod中的每个容器设置CPU限制。但是,如果我将1000M
CPU限制设置为每个容器,那么任何容器都不能使用超过1000M
的CPU,即使其他两个是空闲的,这不是我想要的。
我想为pod设置3000M
的CPU配额,而不是每个容器。例如,如果X
,Y
Z
可以使用3000M
CPU;ifX
占用1500M
CPU,Y
使用1000M
CPU,则Z
只能使用500M
CPU。
那么,我的问题是:
如何在多个容器之间共享CPU配额?
我必须设置限制,因为我必须向云提供商支付我的使用费用。
在这种情况下,我建议您使用Vertical-Pod-AutoScaler以及限制范围。
LimitRange
提供的约束可以:
- 在命名空间中强制每个Pod或Container使用最小和最大的计算资源。
VPA将根据当前的使用情况尝试在limitRanges
的最小和最大之间设置建议上限。
注意:确保在集群中安装了metrics-server以启用VPA。
完全不要设置CPU限制。或者把它设为更高的值。设置CPU限制只应该发生在已知需要的情况下,通常它们弊大于利。