我正在运行 Kubernetes Jobs
,其中我对相同数量的 CPU 设置了限制和请求。在其中一些工作中我偶尔会看到OutOfcpu
错误
当我kubectl describe pods PODNAME
看到以下消息时:
Pod Node didn't have enough resource: cpu, requested: 8000, used: 11453, capacity: 16000
这非常清楚地表明了OutOfcpu
发生这种情况的原因。
但我的Limits.cpu == Requests.cpu == 8
.
Limits:
cpu: 8
ephemeral-storage: 500Gi
memory: 10Gi
Requests:
cpu: 8
ephemeral-storage: 300Gi
memory: 2Gi
据我了解,我应该将 pod 的 CPU 资源限制在 8 个,并与耗尽 CPU 资源的节点隔离开来。
我最近才注意到这一点,我们的 Kubernetes 版本是 1.22.5,最近一次升级。
答案1
关于此错误有一个很长的悬而未决的问题。
它是在 k8s v 1.22 中引入的,似乎是一种竞争条件,当 pod 被调度到另一个 pod 终止的节点上时,可能会发生这种情况。终止的 Pod 不再被调度程序看到,但仍然使用节点的资源(CPU、内存)。