跳到文章

Kubelet在windows下获取的cpu数量不正确

在 window 系统中,如果 cpu 的核心数量超过 64 个,那么 windows 会对 cpu 进行分组。例如 72 核的 cpu,会被分为两个 36 核的 cpu 组。分组是为了更好的性能,但是分组也会带来其他的问题。

比如,使用 go 语言获取 cpu 核心数量,

runtime.NumCPU()

只会返回一个 cpu 组的核心的数量。导致获取不到真实的 cpu 核心数量,从而影响 pod 的调度。

这个问题也已经被微软员工发现,并且给出了解决方案

但是还没有被更新到 kubelet,所以我向 kubelet 提了个 PR,也已经被合并。