IT_Study/Ops

[MLOps] Kubeflow pipeline 오류 - kf-resource-quota : must specify cpu/memory

__Vivacé__ 2023. 11. 13. 10:27

kubeflow pipeline 실행 시 다음과 같은 오류가 발생했다.

해석해보자면 내가 생성한 pipeline에 cpu, memory resource가 정의되어있지 않다는 이야기인데, 2가지 맥락으로 볼 수 있다.

 

1. kubeflow namespace 내의 cpu, memory 사용량이 정의되어 있지 않다.

2. pipeline의 해당 component에서 cpu, memory 사용량이 정의되어 있지 않다.

 

확인해보자

 


1. kubeflow namespace 내의 리소스 할당 확인 및 수정

Kubernetes에서 Namespace의 리소스 할당을 수정하는 방법은 기본적으로는 Namespace에 적용된 LimitRangeResourceQuota 객체를 편집하거나 새로 생성하는 것이다.

 

LimitRange는 각 컨테이너에 대한 자원 요구 사항과 제한을 정의하고,

ResourceQuota는 네임스페이스 전체에 대한 총 자원 할당을 제한한다.

 

# LimitRange 확인
$ kubectl get limitrange -n {namespace}

# ResourceQuota 확인
$ kubectl get resourcequota -n {namespace}

 

확인해보니, 현재 ResourceQuota는 정의되어 있었지만, LimitRange는 정의되어 있지 않았다.

따라서 LimitRange를 정의해주었음

limit-range.yaml 파일 내용

# 수정사항 적용
$ kubectl apply -f limit-range.yaml

 

 

이후 pipeline 실행을 해보니, 다른 오류가 떴다.

 

2. pipeline 내 component의 cpu, memory 사용량 정의

다음과 같이 pod resource를 정의하고, pipeline을 실행시켰다.

pipeline default는 kubeflow docs 참고

 

이후 pipeline을 적용한 결과 build에 성공했다.

build 성공 표시

 


사견으로는,

kubeflow v1.5에서는 각 component에서의 resource 사용량을 정의해주지 않아도 limitrange setting으로 namespace 내 모든 component들의 resource 사용량을 관리했었는데,

kubeflow v1.6에서는 각각의 component에서도 실질적 resource 사용량을 정의해서 사용할 수 있도록 좀 더 세분화시켜준 듯 하다.