Kubernetes中如何使用CPU请求和限制?
CPU请求规定了下面参数:
- 所需的最低CPU
- 如果有可用的CPU,我可以使用多少?
示例:
- 在具有1个CPU的单个节点中
- 如果将100Mi分配给containerA,200Mi分配给containerB
- 并且它们使用100%CPU
容器A将使用333Mi和另一个则使用666Mi
请求Request适合于:
- 设置基线(至少给我多少 CPU)
- 设置Pod之间的关系(此Pod A使用的CPU是另一个CPU的两倍)
请求对设置硬限制没有用,因此,这时您还需要CPU限制。
设置CPU限制时,您要定义一个时间段以及该时间段内可以拥有的CPU数量(也称为配额)。示例:
-周期:100000微秒
-配额:10000微秒
我只能使用CPU的时间限制是10000/100000秒内。也简称为“ 100Mi”
如果您的容器有硬限制并想要更多的CPU,则它必须等待下一个周期。因为您的处理已被限制。那么,您应该如何在Pod中使用CPU请求和限制?
对于请求,请按以下方式计算最小的CPU单位:
REQUEST = 节点数量 * 1000 / 每个节点的最大PODS数量 |
对于1个vCPU节点和最多10个Pod,即1 * 1000/10 = 100Mi请求。
分配最小的单元或倍数它到您的容器。
假如我不知道容器A需要多少CPU,但我知道它的CPU密集度是容器B的两倍。
- B的CPU请求:100Mi(1个单位)
- A的CPU请求:200Mi(2个单位)
如果容器使用更多的CPU,则对于所有可用CPU,它们将保持1:2的比率
对于限制,
- 您的应用可能已经具有“硬”限制。例如,Node.js是单线程的,最多使用1个核心
- 您可能拥有:限制=节点CPU-(保留的CPU)
如果需要更具体,则可以采用概要分析。将限制设置为99%+ 50%