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%。
答案 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个核心的第一个节点。