Kubernetes中如何使用CPU请求和限制? - daniele


Kubernetes中如何使用CPU请求和限制?
 
CPU请求规定了下面参数:

  1. 所需的最低CPU
  2. 如果有可用的CPU,我可以使用多少?

示例:
  • 在具有1个CPU的单个节点中
  • 如果将100Mi分配给containerA,200Mi分配给containerB
  • 并且它们使用100%CPU

容器A将使用333Mi和另一个则使用666Mi
 
请求Request适合于:
  1. 设置基线(至少给我多少 CPU)
  2. 设置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%