1. 개요
MLOps를 공부하면서 자연스럽게 kubeflow를 사용하게 되는 것이 많아졌다.
이미 구축이 되어 있던 공공 서버에서 작업을 하고 혼자 연습을 하고 싶기 때문에, 집에 있는 Windows 데스크탑에 kubeflow 구축을 시도해 보았다.
지난해도 시도는 해봤지만 스펙 문제로 실패했지만 주말을 바친 끝에 마침내 성공했다…개인적인 의견이지만 kubeflow는 아직 진입 장벽이 너무 높다는 생각이 든다.
2. 목차
설치 환경은 다음과 같습니다.
- 운영 체제: Windows 11 64bit
- 환경: Docker, WSL2, Minikube v1.29.0
- Kubeflow 관련 사양: kustomize v3.8.4, kubeflow v1.4
3. Minikube 설치
1. Minikube는 Windows power shell를 사용하여 설치했다.
설치하기 전에 먼저 보안 정책에서 수정해야 합니다.
Windows Power 셸을 관리자 권한으로 실행한 후 다음 명령을 실행합니다.
Set-ExecutionPolicy AllSigned
그러나 위의 명령을 실행 한 후 power shell을 실행하면 “profile.ps1 파일이 디지털 서명되지 않았습니다.
”라는 오류 메시지가 나타납니다.
이 경우 권한을 unrestricted로 변경하면 위의 오류 메시지가 더 이상 표시되지 않습니다.
관련하여 검색해 본 결과, 위의 방식이 좀 더 안전한 세팅이라고 한다.
Set-ExecutionPolicy Unrestricted
2. 그런 다음 minikube를 설치하기 위해 Windows 패키지 관리자 chocolatey를 설치합니다.
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
3. Chocolatey가 성공적으로 설치되면 minikube를 설치합니다.
choco install minikube
4. Docker 설치
4.1 WSL2 설치
Kubeflow는 Kubernetis를 기반으로 하므로 Windows에서 kubeflow를 사용하려면 Docker를 설치해야 합니다.
그러나 Windows에서 Docker를 사용하려면 Hyper-V 설정을 허용해야 하지만 그 설정은 Windows Pro 버전에서만 가능한 설정입니다.
그리고 Windows 11에서는 Hyper-V의 설정도 없다고 하지만, 그 부분은 정확하게 확인할 수 없었다.
결론적으로 나는 WSL2 (Windows Subsystem for Linux 2)라는 것을 사용하여 도커를 설치해야했습니다.
1. 먼저 power shell로 간단한 설정을 하십시오.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2. 다음 링크에서 최신 패키지를 다운로드합니다.
3. 설치하기 전에 컴퓨터를 다시 시작하고 다운로드한 파일을 실행합니다.
4. Windows 터미널을 실행하고 다음 명령을 실행합니다.
wsl --set-default-version 2
4.2 Docker desktop 설치
WLS2의 설치가 끝나면 도커 데스크탑을 설치하는 순서다.
아래 링크에서 환경에 맞는 데스크톱을 다운로드합니다.
1. https://www.docker.com/products/docker-desktop/
2. 설치가 완료되면 Docker 데스크톱을 시작하고 구성으로 이동합니다.
설정의 kubernetes 탭에서 모든 관련 설정을 확인한 다음 다시 실행하십시오.
모든 설정이 올바르게 이루어지면 (resources> advanced) 탭에서 다음과 같이 WSL2와 관련된 내용을 볼 수 있습니다.
3. 도커 설치가 완료되면 minikube를 실행하여 올바르게 실행되는지 확인합니다.
minikube start --driver=docker --memory=16g --cpus=4 --disk-size 80GB --kubernetes-version=1.20.11 --profile=hm
메모리, CPU 등의 설정은 데스크탑 환경에 맞게 변경하십시오. 처음에 메모리에 12G를 할당했지만 무한 실행이 되었는지 kubeflow가 실행되지 않았다.
천천히 잡아 주자. 이때, 도커의 디폴트 설정에 의해 데스크탑의 전체 메모리의 절반 정도로 사용량이 제한되고 있지만, .wslconfig 파일을 수정해 제한량을 늘릴 수 있다.
.wslconfig 파일은 기본적으로는 user/{사용자} 에 자동적으로 생성되지 않을 가능성도 있어, 나도 없고 따로 형성을 해 주었다.
메모장 파일이 아니라는 점에 주의해야 한다.
파일을 만든 후 다음 내용을 저장합니다.
(wsl2)
memory=32GB
processors=6
swap=0
위의 설정을 저장해도 처음에는 도커에 반영되지 않았지만, 잇달아 컴퓨터를 재기동했더니 바로 반영되었다.
메모리까지 변경하면 다시 minikube를 실행해 보자.
5. Kubeflow 설치
현재 kubeflow는 v1.6까지 배포됩니다.
Kubeflow를 설치하려면 kustomize라는 공식 패키지를 사용하면 된다.
kustomize는 23.03.20 기준 v5.0.0이 최신 버전이며 다음 링크에서 다운로드 할 수 있습니다.
현재 최신 버전의 kubeflow에서는 5.0 버전의 kustomize를 사용해야 합니다.
다만 무엇이 문제인지 kubeflow 임명이 제대로 할 수 없기 때문에 나는 kustomize v3.8.4, kubeflow v1.4를 사용했다.
Kubeflow v1.4는 다음 링크에서 branch를 변경하여 다운로드할 수 있습니다.
Kubeflow에는 두 가지 설치 방법이 있습니다.
첫 번째는 단일 명령으로 쉽게 구성 요소를 설치하는 방법이고 두 번째는 각 구성 요소를 하나씩 직접 설치하는 것입니다.
당연히 두 번째 방법이 더 어렵고 숙련자를위한 방법이기 때문에 첫 번째 방법을 사용하여 설치를 진행했습니다.
Windows power shell을 관리자 권한으로 실행한 후 manifests를 설치한 경로로 이동하여 다음 명령을 실행합니다.
while !
kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
그런데, 상기 명령을 그대로 입력하면 에러가 발생하고, 이하의 명령으로 수정했다.
while($true) {kustomize build example | kubectl apply -f -}
공식 깃발 허브에서도 설명한 것처럼 위의 명령을 실행해도 kubeflow가 완전히 실행되는 데는 상당히 시간이 걸립니다.
여러 권한과 포드가 서로 얽혀 있으므로 설치, 실행이 완료될 때까지 무한 루프를 기다려야 합니다.
6. Kubeflow Dashboard에 연결
Kubeflow 대시보드는 포트 포워딩을 해야 연결이 가능하다.
Windows 터미널에서 다음 명령을 실행한 후 localhost:8080으로 연결하면 대시보드를 확인할 수 있다.
kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80
7. 끝 …
Kubeflow 설치는 작년에도 거의 2주 이상 시도했지만 실패한 기억이 있다.
그래서 거의 반 포기 상태에서 공유 서버에서 작업하고 있었지만, 연습을 하기에는 부적절한 환경이므로 이번에 다시 집 데스크탑에 설치를 시도해 보았다.
작년보다 컴퓨터 스펙이 많이 좋아질 것이지만, 같은 프로세스로 설치를 했지만, 왜 이번은 되는지 모른다…물론 이번에도 쉽지 않았다.
이번에도 거의 포기하고 자고 마지막으로 재시행했을 때 성공했지만 주말 하루를 바친 값을 한 것 같다.
최신 버전으로 구성할 수 없었던 것은 유감이지만, 원래 최신 버전은 함부로 쓰는 것이 아니기 때문에… 다음은 kubeflow를 활용해 파이프라인을 구성해 보고 싶다.