Kubernetes中CPU和核心的含义是什么?

fcy6dtqo  于 2023-11-17  发布在  Kubernetes
关注(0)|答案(4)|浏览(130)

阅读文档后,我真的不明白这一点。有些使用“CPU”之类的术语,但有些使用“核心”。
我在笔记本电脑上运行Kubernetes进行测试。我的笔记本电脑有一个CPU(2.2 GHz)和四个核心。
如果我想设置pod的CPU请求/限制,我拥有的最大资源应该是1000 m还是4000 m?
在Kubernetes上下文中,CPU与核心有什么区别?

kknvjkwl

kknvjkwl1#

为了澄清在Kubernetes上下文中描述的here,1个CPU与核心相同(更多信息也在这里)。

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

字符串
例如,Intel Core i7 - 6700有四个核心,但它具有超线程,这使系统在核心方面看到的数量增加了一倍。因此,本质上,它将在Kubernetes中显示为:

8000m = 8 cores = 8 vCPUs


一些额外的信息:这些资源由kube-scheduler使用Completely Fair Scheduler(CFS)管理,并且在同一台机器内无法保证溢出,并且您的pod可能会被移动。
如果你想有更强的保证,你可以考虑kubelet中的--cpu-manager-policy=static(CPU管理器)选项。更多信息在这里和here
有关系统在Linux系统上视为CPU(以及CPU数量)的更多详细信息,您可以通过运行cat /proc/cpuinfo来查看有多少vCPU。

laximzn5

laximzn52#

要消除对您的笔记本电脑或任何其他环境的任何猜测,请执行:

kubectl get nodes

字符串
.然后对于一个特定的节点:

kubectl describe node <node-name>


在Allocatable下查找cpu(它可能与“Capacity'下的值相同)。
同时考虑到
当为容器设置“分数”resources.requests.cpuresources.limits.cpu时。

7ivaypg9

7ivaypg93#

我个人认为apisim解决方案更适合我的问题。
我运行命令,发现我只有两个可分配的内核:


的数据
我不明白为什么,直到我发现了这个:


的数据
Rico说我的笔记本电脑应该有八个内核,因为超线程。但是Docker默认设置将其限制为两个。

vlju58qv

vlju58qv4#

正如 * Assign CPU Resources to Containers and Pods * 中提到的,它清楚地说:
CPU资源以CPU单位度量。在Kubernetes中,一个CPU相当于:

  • 1个AWS vCPU
  • 1个GCP核心
  • 1 Azure vCore
  • 1个超线程在英特尔裸机处理器上,具有超线程功能

因此,设置参数-cpus "2"告诉容器尝试使用两个CPU。
此外,CPU总是作为绝对数量被请求,而不是相对数量; 0.1是单核、双核或48核机器上相同的CPU数量。

相关问题