Kubernetes中CPU和核心是什么意思?

GMs*_*soF 14 kubernetes

阅读完文档后,我真的不明白这一点。有些使用像“CPU”这样的术语,但有些使用“核心”。

我在我的笔记本电脑上运行 Kubernetes 以进行测试。我的笔记本电脑有一个 CPU (2.2 GHz) 和四个内核。

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

在 Kubernetes 上下文中,这里有什么区别(CPU 与核心)?

Ric*_*ico 15

为了澄清什么描述这里的Kubernetes背景下,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.
Run Code Online (Sandbox Code Playgroud)

例如,英特尔酷睿 i7-6700 有四个内核,但它具有超线程,可以使系统在内核方面看到的数量翻倍。所以本质上,它将在 Kubernetes 中显示为:

8000m = 8 cores = 8 CPUs
Run Code Online (Sandbox Code Playgroud)

一些额外的信息:这些资源由 kube-scheduler 使用完全公平调度程序(CFS) 管理,并且不能保证同一台机器内的超限,您的 pod 可能会四处移动。

如果你想有更强的保证,你可以考虑--cpu-manager-policy=statickubelet 中的(CPU Manager) 选项。更多信息在这里这里


api*_*sim 6

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

kubectl get nodes
Run Code Online (Sandbox Code Playgroud)

...然后这是一个特定的节点:

kubectl describe node <node-name>
Run Code Online (Sandbox Code Playgroud)

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

考虑到

1 CPU = 1000 millicores/millicpu
Run Code Online (Sandbox Code Playgroud)

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