저는 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, 메모리)를 사용합니다.