在通读document之后,我不太了解。有些使用“ CPU”之类的术语,有些使用“核心”。
我正在笔记本电脑中运行Kubernetes以进行测试,我的笔记本电脑具有一个CPU(2.2 GHz)和4个内核。
我的问题是,如果要设置pod的CPU请求/限制,我拥有的最大资源应该是1000m还是4000m?
有人可以在Kubernetes上下文中解释两者之间的区别(CPU与内核)吗?
答案 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管理器)选项。更多信息here和here。
答案 1 :(得分:2)
要删除有关笔记本电脑或任何其他环境的任何猜测工作,请执行
kubectl get nodes
...然后针对特定的节点:
kubectl describe node <node-name>
在Allocatable下查找cpu
(可能与“容量”下的值相同)。
考虑到这一点
1 CPU = 1000 millicores/millicpu
为容器设置“小数” resources.requests.cpu
和resources.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)