본문 바로가기

MlOps

[Kubeflow] 로컬환경에서 minikube를 통한 kubeflow 구축

728x90

안녕하세요 오랜만입니다. 오늘은 지난번에 말했던대로 로컬환경에서 kubeflow를 구축해보겠습니다.

 

사실 GCP에서 구축을 먼저 올리려고했는데 별 의미없는거 같아서 로컬 minikube 환경에서 구축해보는걸 올리려고합니다. 추후엔 rancher -> k8s -> kubeflow 순으로 연동을 해보려합니다.

 

본 구축에서 참고한 글은 이수진님의 블로그입니다. 

 

https://lsjsj92.tistory.com/580

 

kubeflow 설치하기 - Machine Learning pipeline kubeflow install

포스팅 개요 이번 포스팅은 지난 글인 머신러닝 파이프라인이란?(Machine Learning pipeline) 글에 이어서 머신러닝 파이프라인인 kubeflow를 설치(kubeflow install)하는 방법에 대해서 작성합니다. 지난 글

lsjsj92.tistory.com

 

 

 

 

실험환경은 ubuntu18.04 버전의 서버입니다.

 

우선 알아두셔야할게 kubeflow에서 제공하는 주피터 노트북을 사용할 때 GPU를 사용하려면 미리 설정이 필요합니다.

 

왜냐하면 쿠버네티스상에서 gpu를 사용하려면 로컬, 도커 상에서 사용하기위해 하는 설정 외에 다른 설정을 해줘야합니다. 

 

일단 GPU가 있으신 분들은 로컬에서 gpu 드라이버를 설치하셔야합니다.

 

저는 순서상 로컬 -> 도커 -> 쿠버네티스 순으로 gpu 인식을 시켰는데 바로 로컬 드라이버 설치 후에 쿠버네티스환경을 설정해도 되는지는 따로 실험을 안해봐서 잘 모르겠습니다.

 

본 글에서는 쿠버네티스에서 gpu 인식 시키는 부분만 다루겠습니다.

 

이 부분은 minikube 설치 후에 다시 말하겠습니다.

 

minikube부터 설치합시다. 

당연한 소리겠지만 docker 는 무조건 설치되어있어야하고 kubectl도 설치되어있는게 좋습니다.

 

https://v1-18.docs.kubernetes.io/ko/docs/tasks/tools/install-minikube/

 

Minikube 설치

이 페이지는 단일 노드 쿠버네티스 클러스터를 노트북의 가상 머신에서 구동하는 도구인 Minikube의 설치 방법을 설명한다. 시작하기 전에 리눅스맥OS윈도우리눅스에서 가상화 지원 여부를 확인

v1-18.docs.kubernetes.io

공식 docs에 올라와있는 minikube설치를 참고하여 설치해봅시다.

 

 

설치가 되었다면 간단한 명령어로 minikube를 시작해봅시다.

뭐 여러가지 조건을 추가해서 실행할 수도 있지만 로컬에서 실행시킬거니까  저런 옵션으로 실행해 줍니다.

minikube start --vm-driver=none

실행이 되었으면 minikube status 등의 명령으로 상태를 확인해 볼 수 있습니다.

 

kubeflow를 설치하려면 kfctl이 필요합니다. 

다음에서 제공하는 kfctl을 환경에 맞게 다운해줍니다.

 

https://github.com/kubeflow/kfctl/releases

 

Releases · kubeflow/kfctl

kfctl is a CLI for deploying and managing Kubeflow - kubeflow/kfctl

github.com

 

다운받은 파일을 압축해제해줍니다.

wget https://github.com/kubeflow/kfctl/releases/download/v1.2.0/kfctl_v1.2.0-0-gbc038f9_linux.tar.gz


tar -xvf kfctl_v1.2.0-0-gbc038f9_linux.tar.gz

 

 

이제 설치해 필요한 yaml파일과 환경설정을 해줍시다.

 

환경설정을 해줍시다.

 

export PATH=$PATH:$(pwd)
export KF_NAME='taeil-kubeflow'
export BASE_DIR=/(경로지정)
export KF_DIR=${BASE_DIR}/${KF_NAME}
export CONFIG_FILE=${KF_DIR}/kfctl_k8s_istio.v1.2.0.yaml
export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/master/distributions/kfdef/kfctl_k8s_istio.v1.2.0.yaml"

 

여기서 중요한건 yaml파일의 버전입니다. 저같은 경우는 1.2.0 버전으로 했지만 후속버전이 있을 수도있고 확인해보셔야합니다. 깃허브에 접속하셔서 버전을 확인하는 것도 좋을 거 같습니다.

 

그 이후에 디렉토리 환경에 들어가 명령어를 입력합시다.

 

mkdir -p ${KF_DIR}
cd ${KF_DIR}
kfctl build -V -f ${CONFIG_URI}

 

이제 yaml파일이 가져와졌습니다.

 

kfctl apply -V -f ${CONFIG_FILE}

명령어로 kubeflow설치를 진행합시다.

 

설치될때 좀 시간이 걸릴 수 있습니다. 진행사항을 확인하려면 

 

kubectl -n kubeflow get all

을 통해서 pod의 상태를 체크해줍시다.

 

여유를 가지고 기다리면 모든 컨테이너가 동작하는 것을 확인할 수 있습니다.

 

저기 서비스의 31380 포트로 들어가시면 kubeflow 통합 대시보드에 접근이 가능합니다 참고하시기바랍니다.

인그레스 게이트웨이의 노드포트 부분입니다. 해당 포드는 istio 네임스페이스에서 확인가능합니다.

 

 

 

웹으로 접근하시면 다음처럼 이제 확인할 수 있습니다. 

 

 

글이 너무 길어지니 다음 글에 주피터 노트북 설치를 올려보겠습니다.

 

 

 

 

 

 

반응형

'MlOps' 카테고리의 다른 글

[Kubeflow] MlOps  (1) 2021.05.14