当CPU使用率受策略限制时,kubernetes pod会使用多少个内核?

时间:2019-01-31 09:33:20

标签: kubernetes gunicorn google-kubernetes-engine

Kubernetes可以限制pod资源的使用。

requests:
  cpu: 100m
  memory: 128Mi
limits:
  cpu: 200m   # which is 20% of 1 core
  memory: 256Mi

假设我的kubernetes节点有2个核心。我在此节点上以CPU限制200m运行此pod。在这种情况下,我的Pod是否会使用其下层节点的 1Core的200m 2Core的100m + 100m

我的gunicorn worker's number formula或nginx工作人员的号码等需要此计算。 在gunicorn文档中,它说

  

通常,我们建议(2 x $ num_cores)+ 1作为工人数量   首先开始。

那我应该雇用5名工人吗? (我的节点有2个核心)。还是没有关系,因为我的Pod只分配了200m cpu,我应该考虑我的Pod有1个核心?

TLDR: 当kubernetes限制Pod的cpu使用率时,它们使用多少个内核?如果我在Pod内运行top,则会看到2个可用内核。但是我不确定我的应用程序使用的是2核的10%+ 10%还是1核的20%。

2 个答案:

答案 0 :(得分:1)

CPU以称为千位的单位进行测量。群集中的每个节点都会对操作系统进行内部检查,以确定该节点上的CPU核心数量,然后将该值乘以1000以表示其总容量。例如,如果一个节点有2个核心,则该节点的CPU容量将表示为2000m。如果要使用1/10的单芯,则应将其表示为100m。

因此,如果您在集群中提供了200m个milicore,则它将坚持一个核心,并占据该核心的20%。现在,如果您为另一个Pod提供了1.5m,那么只有它会占用多个内核。

答案 1 :(得分:0)

关闭粗线将限制为一个核心的20%,即200m。同样,限制意味着Pod可以最大程度地触摸CPU,但不能超过CPU。因此,pod cpu的使用率不会总是达到极限。

群集的总CPU限制是群集中存在的所有节点的核心的总和。 如果您有2个节点群集,而第一个节点具有2个核心,而第二个节点具有1个核心。 K8 CPU容量为3核(2核+ 1核)。现在,假设您有一个请求1.5核的Pod,那么该Pod不会安排到第二个节点,因为它只有1个核。将被安排到具有2个核心的第一个节点。