Centos

Requests.cpu == Limits.cpu 時出現 Kubernetes OutOfcpu 錯誤

  • March 8, 2022

我正在執行 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

據我所知,我應該在 8 個 CPU 上受到限制,並與 Pod 的 CPU 資源耗盡的節點隔離開來。

我最近才注意到這一點,我們的 Kubernetes 版本是 1.22.5 作為最近的升級。

關於此錯誤的長執行緒存在一個未解決的問題。

它是在 k8s v 1.22 中引入的,似乎是一種競爭條件,當 pod 被調度到另一個 pod 終止的節點上時可能會發生這種情況。調度程序不再看到終止的 pod,但仍使用節點的資源(cpu、記憶體)。

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

引用自:https://unix.stackexchange.com/questions/691933