최근 부서를 옮기게 되면서 MLOps 업무를 시작하게 되었습니다.
현재 회사에서 중점적으로 사용하고 있는 툴이 Kubeflow인데, 이 툴에 대해서 심층적으로 탐구하고자 개인적으로 설치를 진행하게 되었습니다.
근데... 이게 생각보다 쉽지가 않았습니다.... 저같은 삽질을 하지 마시라고 글을 작성합니다....
시작! 🤸♂️
우선 어떻게 설치를 하는지는 kubeflow 공식 페이지를 통해서 확인하는 것이 가장 낫습니다. (여기저기 참고하면서 진행했!는데 안 되는 것이 너무 많더라... )
공식 페이지는 아래를 참고하세요. 가장 최신 버전도 알아서 업데이트되니 여기서 확인하는 것이 가장 좋습니다.
https://www.kubeflow.org/docs/started/installing-kubeflow/
여기 보시면 2가지 방식으로 kubeflow를 설치하는 방법이 보입니다. 여기서 windows를 설치하기 위해서는 2번째 manifest를 이용한 방법을 이용해야합니다. (전문가용... ㅎㅎ)
링크를 클릭, 클릭하다보면 kubeflow manifest github로 연결됩니다.
여기서는 v1.6버전을 기준으로 진행해보겠습니다.
Readme 파일을 확인하다보면 kubeflow를 설치하기 위한 선행 조건이 나타나있습니다.
각 선행 조건을 Windows에서 만족하기 위해서 아래 내용을 실행해줄 것입니다.
- Kubernetes: Docker Desktop 설치
- kustomize, kubectl 각 최신 버전 설치
사실 kustomize, kubectl 모두 windows에 설치해서 명령을 실행할 수 있습니다. 하지만 가이드가 linux 환경을 기준으로 작성되어있어, 몇가지 명령어가 실행되지 않을 수 있습니다. (그냥 wsl을 설치하는 것이 정신 건강에 좋습니다. ㅎㅎ)
결론은! 아래 과정을 통해서 Kubeflow를 설치해보겠습니다. 🤗
- Windows에서 WSL 환경 만들기
- Docker Desktop 설치하기
- kustomize, kubectl 설치하기
- WSL 환경에서 Kubeflow 설치하고, UI 확인하기
1. Windows에서 WSL 환경 만들기
WSL 설치에 대한 내용은 많은 곳에서 제공되고 있습니다.
제가 참고 했던 사이트입니다. 참고하시기 바랍니다.
팁을 좀 드리자면 이게 설정이 잘못되면 다시 시작을 자주 하셔야 합니다. 마음에 준비를 하고 차근차근 진행하시기 바랍니다.
https://cpuu.postype.com/post/10265353
2. Docker Desktop 설치
해당 내용도 많은 곳에 정리가 되어있습니다.
아래는 공식 사이트에서 알려주는 내용을 첨부드리겠습니다.
https://docs.docker.com/desktop/install/windows-install/
https://docs.docker.com/desktop/kubernetes/
영어가 어려우면 아래 사이트를 참고하세요. ㅎㅎ
https://gurumee92.tistory.com/300
💡 만약 wsl에서 docker 명령어가 되지 않는다면?
- wsl --shutdown 후에 다시 실행해봅니다.
- setting > General에 "Use the WSL 2 based engine ... " 옵션을 활성화 해봅니다.
💡 Resource 변경을 미리해주자
Resource가 너무 적게 잡혀있다면 kubeflow를 설치가 너무 오래걸리거나, pod가 pending 상태에 갇힐 수 있습니다. 메모리 사용량, 데이터 사용량을 넉넉히 설정해둡시다.
3. kustomize, kubectl 설치하기
우선 wsl에 들어가서 프로그램을 설치합니다.
home에 kubeflow 폴더를 만들어서 파일들을 관리해봅시다.
cd ~
mkdir kubeflow
cd kubeflow
kustomize 설치 (참고: https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/)
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bashs
sudo kustomize /usr/loca/bin/
kustomize version
kubectl 설치 (참고: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
4. WSL 환경에서 Kubeflow 설치하고, UI 확인하기
자 이제 모든 선행조건이 완료되었습니다.
다시 kubeflow manifests github로 돌아갑니다.
우선 git clone을 통해서 manifest를 가져옵니다.
git clone https://github.com/kubeflow/manifests.git
# 원하는 브랜치가 있다면 설정
git checkout <branch>
cd manifests
쭈욱 읽어보면 한 번 설치하는 방법이 있고, 각 요소들을 하나씩 설치하는 방식이 있습니다. 아직 하나하나 파악하지는 못 한 상황임으로 한 번에 설치하는 코드를 실행시켜봅시다.
(kubeflow의 다양한 컴포넌트를 설치하기 때문에 시간이 꽤 오래걸립니다.)
설치가 완료되면 아래 명령어를 통해서 UI를 띄어보겠습니다.
(istio는 kubeflow의 각 요소들을 연결해주는 역할을 합니다. 여기서는 Kubeflow의 UI를 forwarding 함으로써 사용자가 웹으로 확인할 수 있도록 합니다.)
이게 너무 오래걸린다고 하면 docker desktop의 메모리 사용량이 제한되어있을 수도 있습니다.
최소 8GB까지는 늘려줍시다.
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
localhost:8080 으로 접속하면 로그인 화면이 나타납니다.
기본 email/password은 readme에서 확인할 수 있습니다.
기본 이메일로 로그인하면... 짠! 이렇게 웹화면을 확인할 수 있습니다. 😁
'Engineering 💻 > MLOps' 카테고리의 다른 글
복잡한 네트워크를 간단하게! Kubernetes Service를 알아보자 (ClusterIP, NodePort, LoadBalancer) (0) | 2025.01.13 |
---|---|
MLOps Engineer와 함께 쿠버네티스(Kubernetes) 구조 살펴보기 (0) | 2025.01.12 |
현직 MLOps Engineer의 쿠버네티스(Kubernetes) 간단한 고찰 (0) | 2025.01.11 |