Kubernetes-CPU和内核的含义?

时间:2018-11-12 04:25:22

标签: kubernetes

在通读document之后,我不太了解。有些使用“ CPU”之类的术语,有些使用“核心”。

我正在笔记本电脑中运行Kubernetes以进行测试,我的笔记本电脑具有一个CPU(2.2 GHz)和4个内核。

我的问题是,如果要设置pod的CPU请求/限制,我拥有的最大资源应该是1000m还是4000m?

有人可以在Kubernetes上下文中解释两者之间的区别(CPU与内核)吗?

4 个答案:

答案 0 :(得分:3)

为弄清楚Kubernetes上下文中对here的描述,1个CPU与一个内核相同。

1000m (milicores) = 1 core = 1 CPU = 1 AWS vCPU = 1 GCP Core.
100m (milicores) = 0.1 core = 0.1 CPU = 0.1 AWS vCPU = 0.1 GCP Core.

例如,英特尔酷睿i7-6700具有4个内核,但具有超线程功能,使系统在内核方面的性能提高了一倍。因此,从本质上讲,它将在Kubernetes中显示为:

8000m = 8 cores = 8 CPUs

一些额外的信息,这些资源由kube-scheduler使用Completely Fair Scheduler(CFS)进行管理,因此不能保证同一台计算机的超限运行,并且您的Pod可能会四处移动。

如果您想获得更强有力的保证,则可以考虑kubelet中的--cpu-manager-policy=static(CPU管理器)选项。更多信息herehere

答案 1 :(得分:2)

要删除有关笔记本电脑或任何其他环境的任何猜测工作,请执行

kubectl get nodes

...然后针对特定的节点:

kubectl describe node <node-name>

Allocatable下查找cpu(可能与“容量”下的值相同)。

考虑到这一点

1 CPU = 1000 millicores/millicpu

为容器设置“小数” resources.requests.cpuresources.limits.cpu时。

答案 2 :(得分:0)

如此处所述,https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/

它清楚地说,

The CPU resource is measured in CPU units. One CPU, in Kubernetes, is equivalent to:

1 AWS vCPU
1 GCP Core
1 Azure vCore
1 Hyperthread on a bare-metal Intel processor with Hyperthreading

因此,设置参数-cpus "2"告诉容器尝试使用2个CPU。

此外,CPU始终被请求为绝对数量,而不是相对数量。单核,双核或48核计算机上的CPU数量等于0.1。

答案 3 :(得分:0)

感谢Rico在Kubernetes上下文中解释CPU与核心。

我个人认为apisim解决方案更适合我的问题。

我运行命令,发现我只有2个可分配的内核:

enter image description here

我不明白为什么,直到找到这个:

enter image description here

Rico是正确的,由于超线程,我的笔记本电脑应具有8个内核。但是docker默认设置将其限制为2。

希望这对其他人有帮助。