Kubernetes/삽질

0/1 nodes are available: 1 Insufficient nvidia.com/gpu

비번변경 2022. 2. 25. 21:28

현상

아래 매니페스 파일과 같이 nvidia.com/gpu 리소스를 필요로 하는 pod 생성 시 에러 메세지와 함께 포드가 스케쥴링되지 않았다.

apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          nvidia.com/gpu: 1 # requesting 1 GPU

 

에러 메세지 확인

$ kubectl describe pod <POD_NAME>
[.. 생략 ..]
Events:
  Type     Reason            Age               From               Message
  ----     ------            ----              ----               -------
  Warning  FailedScheduling  3s (x23 over 3m)  default-scheduler  0/1 nodes are available: 1 Insufficient nvidia.com/gpu.

 

원인

nvidia.com/gpu 리소스 부족

describe 명령으로 스케쥴링되는 node 정보를 확인하여 사용 가능한 리소스양과 현재 할당된 리소스양을 비교한다.

$ kubectl describe node <GPU_NODE>
[... 생략 ...]
Capacity:
  cpu:                12
  ephemeral-storage:  214726764Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             16342940Ki
  nvidia.com/gpu:     2
  pods:               110
Allocatable:
  cpu:                12
  ephemeral-storage:  197892185375
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             16240540Ki
  nvidia.com/gpu:     2
  pods:               110
[... 생략 ...]
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                260m (2%)   0 (0%)
  memory             110Mi (0%)  170Mi (1%)
  ephemeral-storage  0 (0%)      0 (0%)
  nvidia.com/gpu     2           2

현재 노드에 사용가능한 nvidia.com/gpu 리소스(Allocatable)가 2이며, 할당된 nvidia.com/gpu 리소스(Allocated resources)가 2이다. 포드가 요구하는 리소스를 전부 사용하고 있기 때문에, 포드가 스케쥴링되지 않는 것이다.

 

조치 방법

불필요한 pod를 정리하는 것이 가장 간편한 해결 방법이 될 것 같다.

그 외엔 사용 가능한 리소스의 양을 늘리는 방법 밖에 없는 듯?

 


참고 문서

https://github.com/NVIDIA/k8s-device-plugin/issues/33

728x90