kubeflow notebook이란?
Kubeflow notebook은 코드를 작성하고 실행할 수 있는 환경을 제공합니다. jupyter lab, vscode, R studio 3가지 중 한개를 선택하고 웹 브라우저로 접속해야 합니다. notebook은 pod로 실행됩니다.
notebook 장점
사용자는 kubeflow 대시보드에서 notebook이 사용할 컨테이너 이미지, 자원(cpu, memory, gpu), volume, affinity, toleration을 손쉽게 설정할 수 있습니다. affinity, toleration은 kubeflow 관리자가 미리 설정한 값만 지정할 수 있습니다.
notebook 실행 원리
notebook은 notebook controller가 CRD로 관리합니다. 사용자의 요청은 notebook-web-app에 API로 전달됩니다. notebook-web-app은 API뿐만 아니라 UI도 관리합니다.
notebook controller은 pod를 statefulset로 관리합니다. pod가 중지되고 실행될때 처음에 사용했던 볼륨을 그대로 사용해야하기 때문에 pod를 statefulset로 관리합니다.
관리자가 관리해야할 항목
kubeflow관리자는 사용자가 과도한 리소스(cpu, memory, GPU)를 사용할 수 없도록 제한해야 합니다. 또한, notebook 컨테이너 이미지를 관리하고 pod가 의도한 노드에 스케쥴되도록 affinity, toleration을 관리해야 합니다.
사용자가 notebook을 설정하는 구간은 notebook생성할 때와 수정할 때입니다.
configmap
사용자가 notebook을 생성할 때 kubeflow 대시보드를 사용하는데, 대시보드에서 보이는 필드를 configmap으로 설정할 수 있습니다.
kubectl -n kubeflow get cm | grep jupyter-web-app-config
커스텀 이미지
커스텀 이미지는 image필드에서 관리합니다. 아래 예시는 image.options에 test:v1을 추가했습니다.
affinity
affinity는 affinityConfig에서 관리합니다.
toleration
toleration은 tolerationGroup에서 관리합니다.
namespace 사용하는 리소스 총량 제한: ResouceQuota
ResoucesQuota는 namespcae가 사용하는 총 리소스 양을 제한합니다. kubeflow에서는 profile에서 ResoucesQuota를 관리합니다. profile은 kubeflow에서 논리적으로 관리하는 그룹CRD입니다. profile은 kubernetes namespace와 1:1 매칭됩니다.
notebook 생성할 때 리소스 검사
아쉽게도 kubeflow에서는 notebook이 생성될때 또는 notebook pod가 생성될때 리소스 검사를 하지 못합니다.
kubeflow 대신 쿠버네티스 native한 방법으로 notebook 리소스를 검사할 수 있습니다. limit range 또는 admission controller validation을 사용하면 됩니다. admission controller의 이론은 이전 저의 블로그를 참고하시면 됩니다.
- admission controller 설명: https://malwareanalysis.tistory.com/704
'전공영역 공부 기록' 카테고리의 다른 글
Kubeflow pipeline (2) | 2025.09.01 |
---|---|
kubeflow volume이란? (1) | 2025.08.31 |
오류있는 pod를 10시간 디버깅해보니, 원인은 ARM64 미호환 (0) | 2025.08.22 |
kubeflow model registry ui는 ARM을 지원하지 않는다. (0) | 2025.08.18 |
kubeflow에서 illegal instruction (core dump)에러 해결방법 (3) | 2025.08.17 |