Requests.cpu == Limits.cpu인 경우 Kubernetes OutOfcpu 오류

Requests.cpu == Limits.cpu인 경우 Kubernetes OutOfcpu 오류

저는 Jobs동일한 수의 CPU에 대해 제한과 요청이 설정된 Kubernetes를 실행하고 있습니다. 일부 작업에서는 가끔 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에서 도입되었으며 다른 포드가 종료되는 노드에서 포드가 예약될 때 발생할 수 있는 경쟁 조건인 것으로 보입니다. 종료된 포드는 더 이상 스케줄러에 표시되지 않지만 여전히 노드의 리소스(CPU, 메모리)를 사용합니다.

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

관련 정보