当 Requests.cpu == Limits.cpu 时,Kubernetes OutOfcpu 错误

当 Requests.cpu == Limits.cpu 时,Kubernetes OutOfcpu 错误

我正在运行 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、内存)。

https://github.com/kubernetes/kubernetes/issues/106884

相关内容